【发布时间】:2012-04-09 16:01:30
【问题描述】:
我正在使用一个使用奇怪空间作为千位分隔符的工作簿。 Excel 将包含此分隔符的数字视为文本。当我使用查找和替换工具删除此分隔符时,数字会被正确识别为数字。当我使用 VBA 执行相同操作时,使用 Cells.Replace 方法,数字继续存储为文本。然后,包含这些数字的单元格上会出现一个绿色角,允许我将它们转换为数字格式,但此选项在 VBA 中似乎不可利用,因为宏记录器不会记录此操作。
我可以将工作表的单元格复制到一个数组中,然后循环遍历值以替换千位分隔符,然后将数组粘贴回工作表。我的问题是:有没有更有效的方法来删除这些千位分隔符,以便我的数字被视为数字?
【问题讨论】:
-
你能上传一个只有 5 个单元格的示例工作簿,这样我们就可以看到那个奇怪的字符是什么?您可以在 wikisend.com 上传示例文件并在此处分享链接。
-
我假设奇怪的空间是 Chr(160),它是非中断空间,但无论它是什么你都必须知道才能替换它。我能想到的最好的方法是使用 Find 将
Rng设置为每个包含奇怪空间的单元格的循环。如果Rng不是Nothing,Rng.Value = Val(Replace(Rng.Value,StrangeSpace, " "))去除奇怪的空格并强制评估结果。 -
@SiddharthRout: link
-
@TonyDallimore:这个空间确实是一个不间断的空间。但是在循环中使用 Find 方法会很慢。将工作表的值复制到数组中并在其中编辑它们要快得多。唯一的问题是我在使用非常大的表时收到“内存不足”错误。
-
您可以尝试一次加载 10,000(或其他)行以避免“内存不足”错误。您如何强制重新评估已编辑的值?