VBA自动过滤器没有从数组中过滤表



我有一个excel宏,我试图过滤一个名为"TrialBalance"根据条件加载到数组中。我不明白为什么它只会过滤数组中的第一个值。

我还需要引用字段所在的字段名,因为列位置将发生变化。我是excel vba的新手,并试图使用不同的代码来让它工作,但它不起作用。

Sub CreatePremiumPvt()
Dim arr As Variant
Dim i As Integer, lrow As Long

lrow = Sheets("2a.Premium").Cells(Rows.Count, "M").End(xlUp).Row
arr = Sheets("2a.Premium").Range("M2:M" & lrow).Value

Application.ScreenUpdating = False

'Filter & Copy Premium Data from TB

Sheets("TrialBalance").ListObjects("TrialBalance").Range.AutoFilter Field:=31, Operator:=xlFilterValues, Criteria1:=arr
Sheets("TrialBalance").ListObjects("TrialBalance").Range.AutoFilter Field:=1, Criteria1:=Worksheets("Start Here").Range("C7").Value

'add code to copy & paste columns to Premium tab

Application.CalculateFull
Application.ScreenUpdating = True

End Sub

从范围中读取的数组不是自动过滤器识别的形式:您需要使用(例如)Application.Transpose:

进行转换
Sub CreatePremiumPvt()

Dim arr As Variant

With Worksheets("2a.Premium")
arr = .Range("M2:M" & .Cells(Rows.Count, "M").End(xlUp).Row).Value
End With

Application.ScreenUpdating = False

With Sheets("TrialBalance").ListObjects("TrialBalance")
.Range.AutoFilter Field:=31, Operator:=xlFilterValues, _
Criteria1:=Application.Transpose(arr)
.Range.AutoFilter Field:=1, Criteria1:=Worksheets("Start Here").Range("C7").Value
End With

Application.CalculateFull
Application.ScreenUpdating = True

End Sub

相关内容

  • 没有找到相关文章

最新更新