警告:前面有超长的 Excel 公式
我还希望处理重要数字,但无法使用 VBA,因为电子表格不支持它们。我访问了这个问题/答案和许多其他网站,但所有答案似乎并不总是处理所有数字。我对已接受的答案很感兴趣,它已经很接近了,但是当我的数字#value!错误。我确信我可以解决这个问题,但我已经走上了一条路,只是继续前进。
Problem:
我需要以正数和负数模式报告可变数量的有效数字,数字从 10^-5 到 10^5。另外,根据客户(以及紫色数学),如果值为100已提供并且精确到 +/- 1,我们希望用 3 个数字表示答案应该是“100”。所以我也把它包括在内。
解决方案:
我的解决方案是使用一个 Excel 公式,该公式返回文本值以及正数和负数所需的有效数字。
It's long,但根据我的测试(如下所述),无论要求的数字和有效数字如何,似乎都会生成正确的结果。我确信它可以简化,但这不在目前的范围内。如果有人想建议简化,请给我留言!
=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)))))
Note:我有一个名为“sigfigs”的命名范围,我的数字从单元格 A1 开始