我想将一个范围的值放入一个数组中,处理数组数据,然后将该数组中的值设置回它所来自的范围,考虑到该范围可能包含一些隐藏的行。
让我们举一个两列的例子:
----A-------B-----
VALUE | FILTER
1 | P
2 | N
3 | N
4 | P
5 | P
然后应用自动过滤器并将B列设置为仅显示带有“P”的单元格,这将隐藏第3行和第4行。
我得到这样的范围:
Sub WorkRange()
Dim R As Range
Set R = ActiveSheet.Range("A2:A6")
Values = R.Value
Values(1, 1) = "New 1"
Values(2, 1) = "New 2"
Values(3, 1) = "New 3"
Values(4, 1) = "New 4"
Values(5, 1) = "New 5"
R.Value = Values
End Sub
该代码将获得从A2到A6的值,包括由AutoFilter定义过滤掉的隐藏行。当我尝试使用更改的数据设置该范围的值时,它会保持隐藏的行不变,并将可见的单元格(单元格A2,A5和A6)设置为“新建1”。
无论行状态如何,我都想设置该范围内的值。
我有一些有数千行的纸张。如果我逐行改变使用.Cells,则需要很长时间。使用数组设置范围的值要快得多,并且它适用于不存在过滤器的情况。
将数组结果应用到不同的工作表中,并使用vlookup
或=refercells
在公式中引用这些范围
range("A2:A"&lrow).formula = "=sheetnamecell"
这是将数组结果应用回过滤范围的唯一方法。如果未过滤数组范围,则只需将结果直接应用于范围即可。
谢谢,穆鲁根勋爵