分割功能后显示值与数据值不匹配

时间:2014-09-10 04:21:06

标签: excel vba

我正在编写一个宏来解析我的Excel工作表中单元格中的字符串,并应返回该字符串中的三个坐标。我可以让脚本解析字符串并创建一个“coordinateHolder”数组来保存三个坐标。我的问题是,当我更新单元格以显示坐标时,excel显示不显示整个坐标。

例如,如果坐标字符串最初是“1234.1324123,12345.23521,2384.1234253”,我的代码会将我的x,y和z坐标单元更新为“1234.132”,“12345”,“2384.1234”

我的意思是:

enter image description here

(这个在单元格中显示科学记数法,在公式构建器栏中显示缩短的双精度数)

我的代码:

Dim i, j As Integer
Dim coordinates As String
Dim coordHolder As Variant
i = 2
j = 1

Range("I2:K2").Value = Range("E2:G2").Value

Do While Cells(i, j) <> ""
coordinates = Cells(i, j)
coordinates = Replace(coordinates, ",", "")
coordHolder = Split(coordinates, " ")
For a = 0 To UBound(coordHolder)
    Cells(i, 7 + a) = coordHolder(a)
Next a

i = i + 1
Loop

1 个答案:

答案 0 :(得分:1)

Excel对数字的限制为15位。具有更多数字的任何数字将在较低幅度中失去精度以启用数字显示。您的数据的值超出限制并将被截断。

513402938412.123仅显示15位数字。其余小数位已被删除。与值的大小相比,4位或更多小数的显着性相反,因此Excel认为第三次小数之后的数字是可有可无的。

如果要保留值中的所有数字,则需要将其转换为文本并确保它仍为文本,并且不会再次转换为数字。为此,您可以在任何数字前加上撇号。

如果某个单元格包含值5134029388412.12341234,则会将其截断。包含值'5134029388412.12341234的单元格将被视为文本并保持不变。