【发布时间】:2015-09-13 09:13:36
【问题描述】:
我正在尝试按特定列过滤 20000 行和 70 列的数组。如果第 14 列中的值为“Hard”,我想将整行复制到另一个数组。我想出了一个非常简单的实现并尝试使用它,但 Excel 每次都没有响应最终崩溃。然后我在循环中添加了 DoEvents,这样 excel 就不会崩溃。我的代码现在如下所示。如果社区可以帮助我优化它,那将有很大帮助。现在花费的时间太多了。
我可以使用其他一些函数来对数组进行切片,而不是索引,这样可以更快地工作吗?
Dim arr_all() As Variant
Dim arr_Hard(1 To 20000) As Variant
Dim arr_Soft(1 To 20000) As Variant
Dim arr_Travel() As Variant
arr_all = wsCopyTo.Range("A2:BR20000").Value
m = 1
n = 1
For i = LBound(arr_all) To UBound(arr_all)
DoEvents
Select Case arr_all(i, 14)
Case "Hard"
arr_Hard(m) = Application.Index(arr_all, i)
m = m + 1
Case "Soft"
arr_Soft(n) = Application.Index(arr_all, i)
n = n + 1
End Select
Next i
【问题讨论】:
标签: arrays excel vba filter slice