Excel VBA中的过滤器数组

本多瓦

如何过滤多维数组?

我的代码既不工作也不整洁:

Option Explicit
Sub CalcE()
Dim TotalRows As Long
Dim myArray, myArray2 As Variant
Dim i, a As Integer

填充数组

TotalRows = Sheets("Data").Rows(Rows.Count).End(xlUp).Row
myArray = Sheets("Data").Range("A5:F" & TotalRows)
MsgBox "Array populated with " & UBound(myArray) & "entries."

将 myArray 条目过滤到 myArray2 中,但仅过滤第 1、4 和 6 列。

a = 0
For i = 0 To UBound(myArray)
    If myArray(i, 1) > 1 Then
        myArray2(a, 1) = myArray(i, 1)
        myArray2(a, 2) = myArray(i, 4)
        myArray2(a, 3) = myArray(i, 6)
        a = a + 1
    End If
Next i    
MsgBox "Array populated now with " & UBound(myArray2) & "entries."
End Sub

我用谷歌搜索并发现 Excel 中的数组似乎是非常不灵活的东西,不适合使用。人们通常会放弃 VBA 数组,转而使用 AutoFilter 方法。我担心是否真的没有什么好办法。拥有它真是太好了!

Subodh Tiwari sktneer

如果您只需要将第 1、4 和 6 列存储到 中myArray2,请尝试一下...

Dim ws As Worksheet
Set ws = Sheets("Data")
TotalRows = ws.Rows(Rows.Count).End(xlUp).Row
myArray2 = Application.Index(ws.Cells, Evaluate("Row(5:" & TotalRows & ")"), Array(1, 4, 6))

或者你可以像这样调整你的代码......

Dim ws As Worksheet
Set ws = Sheets("Data")
Dim cnt As Long, j As Long
TotalRows = ws.Rows(Rows.Count).End(xlUp).Row
myArray = ws.Range("A5:F" & TotalRows).Value
cnt = Application.CountIf(ws.Range("A5:A" & TotalRows), ">1")
If cnt = 0 Then Exit Sub
ReDim myArray2(1 To cnt, 1 To 3)
For i = 1 To UBound(myArray, 1)
    If myArray(i, 1) > 1 Then
        j = j + 1
        myArray2(j, 1) = myArray(i, 1)
        myArray2(j, 2) = myArray(i, 4)
        myArray2(j, 3) = myArray(i, 6)
    End If
Next i

MsgBox UBound(myArray2, 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA 从表中删除过滤器

来自分类Dev

Excel公式中的多重过滤器

来自分类Dev

Excel中的Python过滤器

来自分类Dev

在Excel中复制过滤器

来自分类Dev

Excel VBA - 自动过滤器和高级过滤器使用错误

来自分类Dev

在报表过滤器中循环时,Excel VBA优化速度

来自分类Dev

Excel VBA中的Microsoft Query-如何通过日期过滤器

来自分类Dev

MS Excel VBA宏脚本中的数字过滤器错误

来自分类Dev

如何将用户过滤器应用于excel vba中的选择?

来自分类Dev

从所有 Excel 表格 VBA 中删除过滤器

来自分类Dev

在 Excel 2010 中使用 VBA 在表格中应用自动过滤器

来自分类Dev

我可以在 vba excel 中设置动态范围以在过滤器中使用吗

来自分类Dev

Excel 2013 VBA清除活动过滤器

来自分类Dev

Excel VBA删除重复重复与过滤器

来自分类Dev

VBA Excel如何在复制行时维护过滤器

来自分类Dev

保存前 Excel VBA 检查过滤器

来自分类Dev

如何将条件从字符串数组传输到自动过滤器。VBA Excel

来自分类Dev

如何在Excel中创建动态过滤器?

来自分类Dev

如何在Excel中创建动态过滤器?

来自分类Dev

使用Python在Excel中创建视觉过滤器-openpyxl

来自分类Dev

合并数据透视表中的过滤器 (Excel)

来自分类Dev

改进 Excel 中的模糊匹配过滤器

来自分类Dev

如何取消选择excel过滤器中的行

来自分类Dev

在Excel VBA中应用过滤器后计算所选单元格的范围

来自分类Dev

Excel VBA:“空”(失败匹配)值的过滤器列表,然后将其复制并粘贴到新列中

来自分类Dev

在Excel VBA中应用过滤器后计算所选单元格的范围

来自分类Dev

在excel中取消过滤表中的所有列并将过滤器保留在列中的正确vba是什么?

来自分类Dev

Excel - 带通配符的高级过滤器

来自分类Dev

VBA Excel autofiltermode = false不关闭自动过滤器

Related 相关文章

  1. 1

    Excel VBA 从表中删除过滤器

  2. 2

    Excel公式中的多重过滤器

  3. 3

    Excel中的Python过滤器

  4. 4

    在Excel中复制过滤器

  5. 5

    Excel VBA - 自动过滤器和高级过滤器使用错误

  6. 6

    在报表过滤器中循环时,Excel VBA优化速度

  7. 7

    Excel VBA中的Microsoft Query-如何通过日期过滤器

  8. 8

    MS Excel VBA宏脚本中的数字过滤器错误

  9. 9

    如何将用户过滤器应用于excel vba中的选择?

  10. 10

    从所有 Excel 表格 VBA 中删除过滤器

  11. 11

    在 Excel 2010 中使用 VBA 在表格中应用自动过滤器

  12. 12

    我可以在 vba excel 中设置动态范围以在过滤器中使用吗

  13. 13

    Excel 2013 VBA清除活动过滤器

  14. 14

    Excel VBA删除重复重复与过滤器

  15. 15

    VBA Excel如何在复制行时维护过滤器

  16. 16

    保存前 Excel VBA 检查过滤器

  17. 17

    如何将条件从字符串数组传输到自动过滤器。VBA Excel

  18. 18

    如何在Excel中创建动态过滤器?

  19. 19

    如何在Excel中创建动态过滤器?

  20. 20

    使用Python在Excel中创建视觉过滤器-openpyxl

  21. 21

    合并数据透视表中的过滤器 (Excel)

  22. 22

    改进 Excel 中的模糊匹配过滤器

  23. 23

    如何取消选择excel过滤器中的行

  24. 24

    在Excel VBA中应用过滤器后计算所选单元格的范围

  25. 25

    Excel VBA:“空”(失败匹配)值的过滤器列表,然后将其复制并粘贴到新列中

  26. 26

    在Excel VBA中应用过滤器后计算所选单元格的范围

  27. 27

    在excel中取消过滤表中的所有列并将过滤器保留在列中的正确vba是什么?

  28. 28

    Excel - 带通配符的高级过滤器

  29. 29

    VBA Excel autofiltermode = false不关闭自动过滤器

热门标签

归档