arrays - 是否可以用符合特定条件的行号填充数组而不循环?

标签 arrays vba excel

我想用仅满足特定条件的行的行号填充VBA中的数组。我想要尽可能最快的方法(例如,RowArray = index(valRange=valMatch).row)

下面是(慢速)范围循环的代码。

当前代码

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

关于arrays - 是否可以用符合特定条件的行号填充数组而不循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921350/

相关文章:

java - 如何将 List<String> 作为 Intent extra 传递?

c++ - 为什么数组中存储了额外的数据?

excel - Dir() 函数在 Mac Excel 2011 VBA 中不起作用

vba - Excel VBA 运行时错误 1004

excel - 如何在 Microsoft Solver Foundation OML 中强制执行平方数约束?

java - 写入长值以在 apache POI 中表现出色

java - 整数数组中的重复数字(Java 基础级别)和时间复杂度

c# - 通过 EPPlus 调用 VBA 宏

excel - VBA to SAP//以表格为输入参数的 RFC 功能模块

javascript - 合并一个属性相同的对象数组,同时将另一个属性的唯一值传输到数组中