需要在excel宏中选择变量范围的建议

时间:2015-02-21 05:24:00

标签: excel vba

我的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

1 个答案:

答案 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