我想在 Excel 单元格中添加超过 20 位数字。单元格的当前格式是常规格式,它会将数字转换为指数格式。我尝试使用数字格式和会计,但当我输入超过 15 位数字时,它会转换为 0。
当采用常规格式时,如何阻止 Excel 将数据转换为 20 位指数格式?
例如:12345678901234567890
Excel 将其转换为常规格式的 1.23457E+19。
Excel 将其转换为数字和会计格式的 12345678901234500000。
答案1
Excel 内部将所有数字存储为 15 位浮点数。如果您需要超过 15 位数字,则必须使用文本而不是数字,因此您将无法使用该数字进行算术计算。您可以让 Excel 将数字存储为文本,方法是在数字前面加上 ',如 Damien 所说,或者将单元格格式化为文本。
答案2
我对 Excel 一无所知,但我相信您可以为其编写 Visual Basic 代码。如果是这样,并且没有其他方法可行,您可以始终将数字拆分为两个单元格(一个用于数字 1-14,另一个用于数字 15-29):Cell[i]A 和 Cell[i]b。
Sum12B = Cell1B + Cell2B
// Detect a remainder in the sum via modular division by 10^14 (15 digits)
Sum12A = Cell1A + Cell2A + remainder
Sum12 = str(Sum12A) & str(Sum12B)
或者,您可以将它们存储在一个单元格中,并使用字符串而不是整数,当您想要添加它们时,您可以在 Visual Basic 中将它们转换为整数,添加它们,然后再次将它们转换为字符串。
答案3
问题出在将其粘贴到 Excel 本身。因此“文本到列”选项在这里无济于事。
最好将单元格格式更改为“文本”,然后您可以将“>15”位数字复制到 Excel 单元格中。
答案4
例如:12345678901234567890 Excel 将其转换为常规格式的 1.23457E+19。Excel 将其转换为数字和会计格式的 12345678901234500000。
您可以使用文本到列选项。使用固定分隔符并将数字分成两半(如果真的很长,则分成较小的块)。
获得两列后,在旁边的单元格中使用 =concantenate(A2,A3)。这将为您提供完整的数字。