导入不带零的数据

Importing data without zeroes

我的工作表中的值已保存到另一个工作表中,我正在按命名范围的区域进行复制。代码如下所示:

For i = 1 to rngDest.Areas.Count
    rngDest.Areas(i).Cells.Value = rngSrc.Areas(i).Cells.Value
Next i

我遇到的问题是用零保存空单元格,当我反转数据复制时,我导入了一堆我不想要的零。我知道我可以通过数字格式隐藏它们(零显示为空白)但我根本不希望单元格中有零。

我确实有一个快速修复,方法是:

rngDest.Replace "0", ""

这是有问题的,因为它删除了作为单元格值的一部分出现的零,例如,FIN01 显示为 FIN1。

我意识到我可以通过使用 .Text 而不是 .Value 来更改上面的代码,但我认为这可能会导致数值出现问题。我可以解析每个单元格并将零更改为“”,但这会显着减慢过程。任何建议表示赞赏...

阅读 Range.Replace method

的文档

The settings for LookAt, SearchOrder, MatchCase, and MatchByte are saved each time you use this method. If you don't specify values for these arguments the next time you call the method, the saved values are used. Setting these arguments changes the settings in the Find dialog box, and changing the settings in the Find dialog box changes the saved values that are used if you omit the arguments. To avoid problems, set these arguments explicitly each time that you use this method.

这意味着如果您不设置这些参数,它将采用最后使用的任何内容,而您永远不知道用户界面或 VBA 中最后使用的是什么。因此,如果您不指定它们,您的代码随机工作或失败的可能性非常高。

rngDest.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False

解决方案太简单了,在 .Replace 函数中添加了一个参数 (xlWhole):

rngDest.Replace "0", "", xlWhole