2

我正在使用一个使用奇怪空间作为千位分隔符的工作簿。Excel 将包含此分隔符的数字视为文本。当我使用查找和替换工具删除此分隔符时,数字会被正确识别为数字。当我使用 VBA 执行相同操作时,使用 Cells.Replace 方法,数字继续存储为文本。然后,包含这些数字的单元格上会出现一个绿色角,允许我将它们转换为数字格式,但此选项在 VBA 中似乎不可利用,因为宏记录器未记录此操作。

我可以将工作表的单元格复制到一个数组中,然后循环遍历这些值以替换千位分隔符,然后将数组粘贴回工作表。我的问题是:有没有更有效的方法来删除这些千位分隔符,以便我的数字被视为数字?

4

3 回答 3

4

您是指单元格 B3 和 B5 中 9 和 5 之间的空格吗?如果是,那么仅仅删除空格并不能解决问题。您还需要删除逗号以将其转换为数字,然后使用适当的千位分隔符对其进行格式化。请参阅此代码和快照

快照

在此处输入图像描述

代码

Sub Sample()
    With Sheets("Feuil1").Columns(2)
        .Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

        .Replace What:=",", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

        .NumberFormat = "#,##0"
    End With
End Sub

高温高压

于 2012-04-09T18:07:45.653 回答
1

上面的答案是对的。问题来自 Excel 区域设置。(即:在法国,数字的格式为 1234,56,而在英文版的 Excel 中为 1234.56) 使用查找和替换工具,不会影响区域设置。

但是,当使用 VBA 用逗号替换点时,基于英语的 VBA 将所有数字设置为字符串。如果将分隔符替换回点,数字将显示在区域设置之后(英文设置为点,法国设置为逗号)。

希望这可以帮助

于 2014-03-21T09:46:56.147 回答
0

将不间断空格作为千​​位分隔符和逗号作为小数分隔符的数字存储为文本。使用Cells.ReplaceVBA 中的方法删除空格并没有将值转换为数字格式,而是将它们存储为文本。解决方案是Cells.Replace第二次使用 VBA 将逗号替换为点,以将值视为数字并将它们复制到工作表中。Excel 然后根据区域设置格式化数字(必要时用逗号替换点)。

于 2012-04-09T20:24:36.653 回答