我不知道如何将其作为数字格式(然后您可以像使用任何其他数值一样使用格式化的数字进行后续计算),但是为了简单地使用 SI 前缀显示数字,这里是公式我用。它采用指定单元格中的公式(通常在它旁边,在本例中为 E28),缩放数字,四舍五入到指定的有效数字数(在本例中为 3),附加适当的 SI 前缀,然后附加指定的单位(在这种情况下,“F”代表法拉)。这里的优点是公式是独立的,不需要任何外部参考表。此公式适用于 femto (10^-15) 到 Tera (10^12),但可以轻松扩展为额外的前缀
=CONCAT(
ROUND(
IF(E28>1E12, E28/1E12,
IF(E28>1E9, E28/1E9,
IF(E28>1E6, E28/1E6,
IF(E28>1E3, E28/1E3,
IF(E28>1, E28,
IF(E28>1E-3, E28*1E3,
IF(E28>1E-6, E28*1E6,
IF(E28>1E-9, E28*1E9,
IF(E28>1E-12, E28*1E12,
E28*1E15
) ) ) ) ) ) ) ) ),
3 +N("This is the number of significant digits to round to")
-(1+INT(LOG10(ABS(
IF(E28>1E12, E28/1E12,
IF(E28>1E9, E28/1E9,
IF(E28>1E6, E28/1E6,
IF(E28>1E3, E28/1E3,
IF(E28>1, E28,
IF(E28>1E-3, E28*1E3,
IF(E28>1E-6, E28*1E6,
IF(E28>1E-9, E28*1E9,
IF(E28>1E-12, E28*1E12,
E28*1E15
) ) ) ) ) ) ) ) ) ))))
),
IF(E28>1E12, "T",
IF(E28>1E9, "G",
IF(E28>1E6, "M",
IF(E28>1E3, "k",
IF(E28>1, "",
IF(E28>1E-3, "m",
IF(E28>1E-6, "µ",
IF(E28>1E-9, "n",
IF(E28>1E-12, "p",
"f"
) ) ) ) ) ) ) ) ),
"F" +N("This is the unit symbol that will be appended to the end")
)
如果你想四舍五入到固定位数的小数而不是有效数字,公式稍微简单一点:
=CONCAT(
ROUND(
IF(E28>1E12, E28/1E12,
IF(E28>1E9, E28/1E9,
IF(E28>1E6, E28/1E6,
IF(E28>1E3, E28/1E3,
IF(E28>1, E28,
IF(E28>1E-3, E28*1E3,
IF(E28>1E-6, E28*1E6,
IF(E28>1E-9, E28*1E9,
IF(E28>1E-12, E28*1E12,
E28*1E15
) ) ) ) ) ) ) ) ),
3 +N("This is the number of decimal digits to round to")
),
IF(E28>1E12, "T",
IF(E28>1E9, "G",
IF(E28>1E6, "M",
IF(E28>1E3, "k",
IF(E28>1, "",
IF(E28>1E-3, "m",
IF(E28>1E-6, "µ",
IF(E28>1E-9, "n",
IF(E28>1E-12, "p",
"f"
) ) ) ) ) ) ) ) ),
"F" +N("This is the unit symbol that will be appended to the end")
)
请注意,我已经用指数表示法编写了所有缩放常数,当您输入公式时,Excel 会将它们更改为纯数字。通过使用相对单元格引用,可以很容易地将公式复制并粘贴到您需要的位置。
公式可以压缩成单个 IF/CONCAT/ROUND 语句块,但是像我在这里所做的那样安排它会将舍入常数分离到公式中的一个点,使其更容易更改。