如何在Excel VBA中使用带科学符号的=LEFT和=LEN函数?
我正在尝试使用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) 无论单元格的格式是数字还是文本,我都得到了相同的结果。有办法解决这个问题吗如何在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。即使显示
谢谢你抽出时间 您试图对数字使用字符串操作。而是使用数学:
=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)
但那太难看了。我只会坚持数学