替代基于条件的复制和粘贴值

时间:2015-05-06 17:58:32

标签: excel vba excel-vba

我试图找出一种基于标准复制和粘贴val的有效替代方法。例如,如果列b包含成本,我希望第二个选项卡包含b列中不存在成本的所有数据。

目前我有张(" sh2")。范​​围(" a1:k50000")。值=张(" sh1")。范​​围(&# 34; A1:k50000&#34)值

然后我在sh2中删除所有行(使用for选择循环),其中填充了成本。但是,对于大型数据集,删除1000行可能是一个漫长的过程。

1 个答案:

答案 0 :(得分:0)

您可以使用Excel的内置过滤功能在复制前删除空白。它看起来像这样:

sheets("sh1").range("a1:k50000").Select
Selection.AutoFilter
sheets("sh1").Range("$a$1:$k$50000").AutoFilter Field:=2, Criteria1:="="
sheets("sh1").Range("$a$1:$k$50000").Copy
sheets("sh2").Range("$a$1").PasteSpecial

Criteria1:=“=”是空白的表达。 “字段:= 2”是第2 / B列,用于检查空白。这里的关键是复制命令只包含已过滤的单元格,因此您只会粘贴已过滤的数据。

此外,如果您在Range(“$ a $ 1:$ k $ 50000”)中没有标题行,则可能需要添加一行以获得可靠的结果。