当过滤器存在时,使用数组设置范围的值

问题描述 投票:1回答:1

我想将一个范围的值放入一个数组中,处理数组数据,然后将该数组中的值设置回它所来自的范围,考虑到该范围可能包含一些隐藏的行。

让我们举一个两列的例子:

----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,则需要很长时间。使用数组设置范围的值要快得多,并且它适用于不存在过滤器的情况。

arrays excel vba range autofilter
1个回答
0
投票

将数组结果应用到不同的工作表中,并使用vlookup=refercells在公式中引用这些范围

range("A2:A"&lrow).formula = "=sheetnamecell"

这是将数组结果应用回过滤范围的唯一方法。如果未过滤数组范围,则只需将结果直接应用于范围即可。

谢谢,穆鲁根勋爵

© www.soinside.com 2019 - 2024. All rights reserved.