VBA 中 Trim 函数的问题(Excel 在 VBA 修剪后更改数据)

Issues with Trim function in VBA (Excel changing data after VBAtrim)

我在使用 Excel trim 函数时遇到问题。很多时候,我提取的数据在信息字符串之后带有额外的空格,例如“1234566”。我以前在 VBA 中使用过 trim 函数,它似乎做得很好,但是当涉及到只有数字的长字符串的单元格时,我遇到了一个问题。

代码如下:

Dim C As Range
For Each C In ActiveSheet.UsedRange
    With C
    C.Value = Trim (C)
    End With
Next C

这适用于大多数情况,但例如,如果我将此代码用于右边带有空格的数字“12355557899200123”,Excel 的 trim 函数将显示为 Trim 但是通过切断最后几个数字的数字值(不好)在这种情况下 12355557899200123 变为 -> 12355557899200100 并且 23 被 00 替换,这可能导致以后计算错误 :(((((.

提前感谢您的帮助和建议!

Excel 的精度为 15 位数字,请参阅 here 以了解此类限制(向下滚动至计算规范和限制)。 12355557899200123 的长度为 17 位数字,这意味着当您将其放入 Excel sheet.

时,您将丢失最后两位数字

您的问题不是Trim本身造成的。您的原始单元格内容是 String(否则不能有任何空格)。 Trim 本身 returns 也是一个字符串,但是当您将结果分配给单元格时, Excel 会看到该字符串仅包含数字并自动将其转换为数字。该数字表示为 Double 并且精度有限。当您在单元格中手动输入 12355557899200123 时,您会得到完全相同的结果。

我能想到的唯一解决方法是将数字存储为字符串 (C.Value = "'" & Trim (C))。但是当你在 Excel 内进行计算时,你仍然会丢失最低有效数字。您必须使用数据类型 Decimal 在 VBA 内进行所有计算,然后将结果作为字符串写回单元格。要处理 Decimal,您必须将变量声明为 Variant 并使用函数 CDec 将值(例如字符串)转换为小数。

Dim v As Variant
v = CDec(ActiveCell)
v = v * 2
ActiveCell.Offset(0, 1) = "'" & CStr(v)