我想用仅满足特定条件的行的行号填充VBA中的数组。我想要尽可能最快的方法(例如,类似RowArray = index(valRange=valMatch).row
)
下面是(慢速)范围循环的代码。
Current Code
Sub get_row_numbers()
Dim RowArray() As Long
Dim valRange As Range
Dim valMatch As String
Set valRange = ActiveSheet.Range("A1:A11")
valMatch = "aa"
ReDim RowArray(WorksheetFunction.CountIf(valRange, valMatch) - 1)
For Each c In valRange
If c.Value = valMatch Then RowArray(x) = c.Row: x = x + 1
Next c
End Sub
仍然是 Chris 的高效变体数组时间的 2-3 倍左右,但该技术很强大,并且具有超越这个问题的应用
需要注意的一点是Application.Transpose
限制为 65536 个单元,因此较长的范围需要“分块”成块。
Sub GetEm()
Dim x
x = Filter(Application.Transpose(Application.Evaluate("=IF(A1:A50000=""aa"",ROW(A1:a50000),""x"")")), "x", False)
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)