从我记事起,如果我只想将过滤列中的可见值复制到新位置,我总是使用Range.SpecialCells(xlCellTypeVisible)。我一直认为,如果我 * 不 * 指定.SpecialCells(xlCellTypeVisible),它将复制列中的所有值。
例如,Sheet 1的A列中有30个值,我应用了自动筛选,因此只有4行可见。我将这样做,以便只将这4个值复制到Sheet 2中:
Sheets("Sheet1").Range("A2:A31").SpecialCells(xlCellTypeVisible).Copy Sheets("Sheet2").Range("A1")
现在我有一个场景,我想复制所有30个值,而不管过滤器是否有效。我想我可以这样做:
Sheets("Sheet1").Range("A2:A31").Copy Sheets("Sheet2").Range("B1")
...但是没有,这仍然只复制了4个可见行!
是我疯了,还是微软在某个时候废弃了.SpecialCells(xlCellTypeVisible)?
除了迭代列中的所有行之外,对于如何复制整个列而不管过滤器是否有效,有什么建议吗?
我使用的是Office 365 Excel,版本为2208。
1条答案
按热度按时间nxowjjhe1#
若要复制整列而不管是否存在筛选器,可以将范围的值分配到
array
中,然后将array
的值分配到新的范围中。请注意,您需要指定要分配值的范围