excel 保留4位有效数字(不是4位小数)

我不想解释啥是有效数字,不知道的麻烦百科一下,别告诉我调单元格格式
1234是4位有效数字
12.34是4位
0.1234是4位
0.01234是4位
0.12340是5位
123400是6位

根据你下面的答案,我最终研究出一个比较笨重的公式,仅供参考,假设数值是A1:

则完整的公式是:=LEFT(TEXT(A1,"0.000E+0"),5)*POWER(10,RIGHT(TEXT(A1,"0.000E+0"),2),

思路是先把源数字变成科学计数格式(这里面无法用单元格属性里面的科学计数格式实现,只能通过公式)。

然后在科学计数从最左侧开始取字符串,即LEFT函数,这里需要注意,小数点也算字符,所以在LEFT函数第二个数字(上述公式中的“5”)要比需要求出的有效数字(本题中为4)位数的值大1。

这样求出了合乎有效数字要求的字符串,然后通过RIGHT公式筛选出科学计数中的指数值。RIGHT公式与LEFT相反,是从右侧取字符串,在科学计数中,表示指数的为最后两位(不能忽略正负号),例如“3.285e-1”中的“-1”,所以公式中的“2”也是固定的。

最后再利用幂函数POWER与之前的有效字符串求出最终值,由于科学计数的底数是10,所以“10”是固定的。

由于公式直接使用源数字进行计算,所以比较麻烦,这里可以用TEXT公式先计算出科学计数的格式,例如为B2,然后再把B2代入公式中,则公式为:

=LEFT(B2,5)*POWER(10,RIGHT(B2,2)

亲测有效!

补充:我这个公式还是有问题,对于过大的数字就没办法实现,比如你例子中的123400,我做出的这个公式只适合我自己的应用,因为我是保留1为有效数字,后面都变成0。最佳答案还应该是科学计数的那个,因为数字过大时,有效数字就是使用科学计数格式。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-21

1、首先在excel表格中输入需要求得4位有效数字的基础数据。

2、然后在其右侧的空白单元格中输入计算公式:=ROUND(A1,3)。

3、点击回车生成函数公式计算结果,可以看到已经将原本的数据更改为只有4位数字的数据了。

4、选中B1单元格右下角的绿色圆点,向下拖拽填充公式即可批量生成4位有效数字的数据了。

本回答被网友采纳
第2个回答  2019-03-12
我给个思路吧,首先要找到第一个非0非小数点的数字,公式如下:
=min(iferror(find("1",B129),10000),iferror(find("2",B129),10000),iferror(find("3",B129),10000),iferror(find("4",B129),10000),iferror(find("5",B129),10000),iferror(find("6",B129),10000),iferror(find("7",B129),10000),iferror(find("8",B129),10000),iferror(find("9",B129),10000)),此处的B129为要处理的数字单元格,如果没找到就设为一个足够大的数字,这里面选为10000。
然后找到小数点的位置=IFERROR(FIND(".",B129),LEN(B129)+1)
接着判断小数点位置和第一个非零数字之间的关系,如果要保留3位有效数字则公式为
=IF(小数点在非零数字前面,LEFT(B129,B130+3-1),LEFT(B129,B130+3))
这是数字后面不用补零的情况,如果要补零,也就是非零数字位置+3>len(B129),那么就要将整个数字后面加上需要添加的0的个数,在次不再详述,如有需要可以自己编码。
第3个回答  2017-09-21
excel 保留4位有效数字:
1. 用ROUND(A1,4)函数,四舍五入,有效数字就是四位。
如A1格为2.23457,则=ROUND(A1,4) 就=2.2346;

2. 用ROUNDDOWN(A1,4)函数,靠近零值,向下(绝对值减小的方向)舍入数字。

3. 用ROUNDUP(A1,4)函数,远离零值,向上舍入数字。追问

大哥,2.2346那叫5位有效数字

第4个回答  推荐于2017-09-26
假设你的数据在A2单元格,则在B2单元格输入公式:
=TEXT(A2,"0.000E+0")
即可。追问

你这个确实是实现我的要求了,不过结果里带E,我怕很多人看不懂啊,要是没有更好的,你就是最佳答案了

追答

1、若要完全保证数据没有E是不可能,因为超过9999的数若要保留4位有效的话,肯定是要用科学计数法的,而计算机的科学计数法就是E,这个不是很多人看不看得懂的问题,由不得你任性!
2、若真要保持9999以下的数看起来正常,像是没有E的描述,你可以使用几个IF,把10以下、100以下的、1000以下和10000以下的作判别,再利用用ROUND之类的函数进行取舍和保留有效数,相信你应该懂的!会操作的吧

本回答被提问者采纳
相似回答