答案 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")
的文本字符串-
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个以上的字符。