如何在Excel VBA中使用带科学符号的=LEFT和=LEN函数?

如何在Excel VBA中使用带科学符号的=LEFT和=LEN函数?,excel,vba,scientific-notation,Excel,Vba,Scientific Notation,我正在尝试使用VBA编写Excel宏,当单元格长度超过20时,该宏将只返回单元格中的前5个数字。该字段通常返回15位的字母数字结果(我需要不说),但在某些例外情况下,将返回一个5位数字,后面有许多零(1234500000000000000000000000000…),Excel将其转换为科学符号(1.2345E+160)。我能够将单元格转换为数字,而不是科学记数法,并查看整数 我试着使用代码,比如=IF(LEN(A1)>20,LEFT(A1,5),A1),它只返回1.2345E+160。即使显示

我正在尝试使用VBA编写Excel宏,当单元格长度超过20时,该宏将只返回单元格中的前5个数字。该字段通常返回15位的字母数字结果(我需要不说),但在某些例外情况下,将返回一个5位数字,后面有许多零(1234500000000000000000000000000…),Excel将其转换为科学符号(1.2345E+160)。我能够将单元格转换为数字,而不是科学记数法,并查看整数

我试着使用代码,比如=IF(LEN(A1)>20,LEFT(A1,5),A1),它只返回1.2345E+160。即使显示的是整数,Excel仍认为单元格长度为11,不会显示前5位数字

我还尝试了一些行,比如=IF(A1=“E”、LEFT(A1,6)、A1),认为它会检测到E,返回1.2345,我可以删除小数点,但这也不起作用(它只返回原来的1.2345E+160)

无论单元格的格式是数字还是文本,我都得到了相同的结果。有办法解决这个问题吗


谢谢你抽出时间

您试图对数字使用字符串操作。而是使用数学:

=A1/1E+160
如果您确实希望将此内容视为文本,请了解存储的基础值是您的
12345000000000000…
,并且该内容中没有小数点。因此,您必须转换为文本并添加小数:

=LEFT(TEXT(A1,"0"), 1) & "." & MID(TEXT(A1,"0"), 2, 4)

但那太难看了。我只会坚持数学

您试图对数字使用字符串操作。而是使用数学:

=A1/1E+160
如果您确实希望将此内容视为文本,请了解存储的基础值是您的
12345000000000000…
,并且该内容中没有小数点。因此,您必须转换为文本并添加小数:

=LEFT(TEXT(A1,"0"), 1) & "." & MID(TEXT(A1,"0"), 2, 4)
但那太难看了。我只会坚持数学