我的Excel文件(data.xlsx)中的Sheet1中有一个数据集。我想在Excel宏中执行一组高级过滤器操作,并将过滤后的数据存储在Sheet2中。标准条件在Sheet1中的“X1:X2”,“Y1:Y2”和“Z1:Z2”中给出。 Sheet2中给出的粘贴范围为A1:X1,A11:X11和A21:A21。
我尝试了以下代码,但它无效。请给我建议。
代码:
Sub AdvFilter()
Dim i As Integer, j As Integer
j=1
For i = 1 To 3
Sheets("Sheet1").Cells.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Sheet1").Range(Cells(1, (23+i)), _
Cells(2, (23+i))), CopyToRange:=Sheets("Sheet2"). _
Range("A" & j, "X" & j), Unique:=False
j=10+i
Next i
End Sub
答案 0 :(得分:0)
Cells(1, (23+i))
指的是ActiveSheet:如果在运行该代码时Sheet1不活动,它将失败。
在引用范围时,最好始终明确。
Sub AdvFilter()
Dim i As Integer, j As Integer
Dim rng As Range, sht1 as worksheet
Set sht1 = Sheets("Sheet1")
j=1
For i = 1 To 3
Set rng = sht1.Cells(1, (23+i)).Resize(2,1)
Sheets("Sheet1").Cells.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:= rng, CopyToRange:=Sheets("Sheet2"). _
Range("A" & j, "X" & j), Unique:=False
j=10+i
Next i
End Sub