在Excel中格式化科学符号

时间:2018-11-29 11:00:58

标签: excel-formula

是否可以将科学计数法的数字格式化为以10为底的指数而不是Excel中的E? 例如,Excel将0.00123转换为1.23E3,但是我想要的格式为1.23x10^3

1 个答案:

答案 0 :(得分:2)

这无法通过使用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,其中第一个值是空字符串的Unicode值(8203)。

整个公式是:
=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,命名范围如上所述。

要使公式完全独立,可以将其硬编码到公式中,这样就可以了:
=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个以上的字符。