我有一个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