【问题标题】:need suggestions in selecting a variable range in excel macro在 excel 宏中选择变量范围时需要建议
【发布时间】:2015-02-21 19:22:21
【问题描述】:

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

【问题讨论】:

  • 当它“不工作”时会发生什么,例如错误消息?结果不好?

标签: excel vba


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 2020-11-15
    • 2018-11-11
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多