警告:前面的疯狂长 excel 公式
我还希望使用重要数字,但我无法使用 VBA,因为电子表格无法支持它们。我去了这个问题/答案和许多其他网站,但所有答案似乎并没有一直处理所有数字。我对接受的答案很感兴趣,它已经接近了,但是一旦我的数字< 0.1,我就得到了#value!错误。我敢肯定我可以修好它,但我已经走上了一条路,只是继续前进。
问题:
我需要在正负模式下报告可变数量的有效数字,数字从 10^-5 到 10^5。此外,根据客户(和紫色数学)的说法,如果提供了100的值并且精确到 +/- 1,并且我们希望提供 3 个 sig 无花果,那么答案应该是“100”。所以我也包括在内。
解决方案:
我的解决方案是一个 excel 公式,它返回带有正数和负数所需有效数字的文本值。
它很长,但根据我的测试(如下所述)似乎生成了正确的结果,无论请求的数字和有效数字如何。我确信它可以简化,但目前不在范围内。如果有人想建议简化,请给我留言!
=TEXT(IF(A1<0,"-","")&LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),(""&(IF(OR(AND(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)+1=sigfigs,RIGHT(LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),1)="0"),LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"))<=sigfigs-1),"0.","#")&REPT("0",IF(sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1))>0,sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)),0)))))
注意:我有一个名为“sigfigs”的命名范围,我的数字从单元格 A1 开始
试验结果:
到目前为止,我已经针对维基百科的示例列表和我自己的示例进行了正面和负面的测试。我还测试了一些早期给我带来问题的值,并且似乎都产生了正确的结果。
我还测试了一些早期给我带来问题的值,现在似乎都产生了正确的结果。
3 无花果测试
99.99 -> 100.
99.9 -> 99.9
100 -> 100.
101 -> 101
笔记:
处理负数
为了处理负数,如果小于 0,我已经包含了一个带有负号的连接,并将绝对值用于所有其他工作。
构建方法:
最初在excel中分为大约6列执行各个步骤,最后我将所有步骤合并到上面的一个公式中。