我注意到使用 Range.Copy 和 Range.SpecialCells(xlCellTypeVisible).Copy 给出了相同的结果,我不太明白为什么,两者到底有什么区别?
举个简单的例子: 如果我有如下电子表格(来自 A1:C6)
A B C
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
如果我过滤掉3,那么可见数据变成:
A B C
1 1 1
2 2 2
4 4 4
5 5 5
当我试图复制上述数据并应用过滤器到另一个范围时,我测试了以下两种方法结果相同,只复制了过滤掉“3”的数据,但为什么? 方法一:
Range("A1:C6").Copy
Range("A10").PasteSpecial xlPasteValues
方法二:
Range("A1:C6").SpecialCells(xlCellTypeVisible).Copy
Range("A10").PasteSpecial xlPasteValues
从直观上看,这两个比较,只有第二个应该排除不可见的过滤掉的数据,但第一个似乎应该包括所有数据,包括不可见的数据。 现在他们的结果说他们是一样的,如果他们是一样的,那么区别是什么?
谢谢大家!
尝试手动复制范围 - 你只会得到过滤后的单元格
从 VBA 代码 Excel 的行为方式与您手动执行的方式相同
如果你想获得完整的细胞块,最简单的方法 - 停用过滤器
如果这种方式不可接受,您可以循环复制每个单元格的值,但这是低效的方式
设置 rng=Range("A1:C6")
对于来自 rng do
的每个单元格
...
下一个单元格