excel-formula - 在 Excel 中格式化科学计数法
解决方案
这在 Excel 中使用标准数字格式是不可能的。
您当然可以使用 将您的号码转换为文本字符串=TEXT(A1;"0.00E+00")
,然后您可以将此文本字符串转换为您想要的格式的新文本字符串。上标有点棘手,因为您必须使用UNICHAR
函数显示它们(此函数自 Excel 2013 起可用)。
该函数使用的 Unicode 值如下(从上标 0 到 9):
8304,185,178,179,8308,8309,8310,8311,8312,8313
所以上标 50 将是=UNICHAR(8309)&UNICHAR(8304)
您可以在工作簿的其他位置使用此值创建一个命名范围,因此使用INDEX
. 实际上,我会创建两个范围,一个用于指数的第一个数字(您没有 0,而是一个空字符串,因为您不想显示 10^03 而是 10^3),以及第二个是指数的第二个数字(保留 0)。
总结一下:
- 将数字转换为文本字符串
=TEXT(A1;"0.00E+00")
- 将“E”替换为“x”
- 将“+”替换为“10”
- 如果数字是负数,添加一个
-
- 用相应的上标替换最后两个字符(转换回数字,
NUMBERVALUE()
然后用于INDEX()
获取 Unicode 值以输入UNICHAR
函数。
所以对于最后一个数字,公式是(在我的例子中,Unicode 值的命名范围是 EXPO1 和 EXPO2):
=UNICHAR(INDEX(EXPO2;1;NUMBERVALUE(RIGHT(A1;1))+1))
对于指数的第一个数字(即文本字符串的最后一个字符),使用这个公式转换为上标:
=UNICHAR(INDEX(EXPO1;1;NUMBERVALUE(LEFT(RIGHT(A1;2);1)+1)))
我在这里有点懒惰,我也可以使用MID
而不是LEFT/RIGHT
组合。请注意,命名范围现在是 EXPO1,其中第一个值是空字符串 (8203) 的 Unicode 值。
整个公式为:
=LEFT(TEXT(A1;"0.00E+00");4)&
"x10"&
UNICHAR(INDEX(EXPO1;1;NUMBERVALUE(LEFT(RIGHT(TEXT(A1;"0.00E+00");2);1)+1)))&
UNICHAR(INDEX(EXPO2;1;NUMBERVALUE(RIGHT(TEXT(A1;"0.00E+00");1))+1))
EXPO1 和 EXPO2 的命名范围如上所述。
要使公式完全自我维持,您可以将它们硬编码到公式中,因此变为 then :
=LEFT(TEXT(A1;"0.00E+00");4)&
"x10"&
UNICHAR(INDEX({8203,185,178,179,8308,8309,8310,8311,8312,8313};1;NUMBERVALUE(LEFT(RIGHT(TEXT(A1;"0.00E+00");2);1)+1)))&
UNICHAR(INDEX({8304,185,178,179,8308,8309,8310,8311,8312,8313};1;NUMBERVALUE(RIGHT(TEXT(A1;"0.00E+00");1))+1))
最后,请注意公式取决于您如何将数字转换为文本。根据 OP 初始问题,我在逗号 ( "0.00E+00"
) 后使用了 2 位精度。如果要显示更多,则必须LEFT
在我的示例中使用第一个公式提取 4 个以上的字符。
推荐阅读
- html - 隐藏具有相同定义的 SVG 时,SVG 标记消失
- python - 为什么我的比较运算符不能在 for 循环中工作?
- javascript - JWT REST api 身份验证:登录失败。电子邮件或密码不正确
- python - 如何为 Z3 中的变量分配新值?
- open-liberty - 包含 mpHealth 功能会破坏 Open Liberty 中的独立应用程序
- c# - 更改窗口焦点后无法将文本写入控制台
- python - 依赖解析器不工作 - 斯坦福核心 NLP
- php - WordPress Sage 9 控制器中的函数在模板中不可调用
- php - 有人可以帮我返回一个值吗?
- excel - 如何在自定义 ui 功能区中将焦点设置为编辑框而不在 VBA 中发送键