如何在ExcelVBA中使用科学计数法的=LEFT和=LEN函数?

How to use =LEFT and =LEN function with scientific notation in Excel VBA?

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

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

我也试过 =IF(A1="E",LEFT(A1,6),A1) 这样的行,认为它会检测到 E,return 1.2345,我可以删除小数点,但这也不起作用(它只是 return 原来的 1.2345E+160)。

无论单元格格式为数字还是文本,我得到的结果都是一样的。有解决办法吗?

感谢您的宝贵时间!

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

=A1/1E+160

如果您真的想将此内容视为文本,请了解存储的基础值是您的 12345000000000000...,并且该内容中没有小数点。所以你必须转换为文本并添加小数:

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

但这很丑陋。我会坚持数学。