Excel 高级过滤器未返回任何数据

Excel advanced filter not returning any data

正在尝试获取用于快速生成报告的有效过滤器 - 正如所见 here

我现在的代码是这样的:

Option Explicit
Sub GetData()

'Clear data field

    Sheets("Filter").Select
    Range("B10").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Clear

'Advanced Filter code

    Sheets("RawData").Range("JobRegister[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        Sheets("RawData").Range("W1:AA2"), CopyToRange:=Sheets("Filter").Range("B10:T10"), Unique:=True



    Range("B10").Select

End Sub

而且它只有 returns 列 headers 而没有结果,无论我使用什么作为标准。

我的条件过滤器如下所示:

=IF(Filter!C4="Any","",Filter!C4)

其中 C4 包含从另一个 sheet 中提取的 DV 列表。

我让它暂时工作了(它会根据某些条件进行过滤,而不是其他条件)但我不知道我做了什么让它工作,也不知道为什么它不再工作了!

如果代码仅返回 headers,则表示您遇到了其中一个问题。

  1. 根据 Sheets("RawData").Range("W1:AA2") 范围内设置的条件,您没有任何匹配数据。手动检查数据集中的这些条件,看看是否找到任何匹配的行。
  2. 如果您找到一些匹配的行,那么您在 Sheet RawDataW1:AA1 范围内输入的 headers 一定有问题。 条件范围中的headers必须与数据集中的headers完全相同。还要检查任何前导或尾随空格。

编辑代码:

这是编辑后的代码。请试一试...

Sub GetData()
Dim sws As Worksheet, dws As Worksheet

Application.ScreenUpdating = False

Set sws = Sheets("RawData")
Set dws = Sheets("Filter")

'Clearing the Criteria Range
sws.Range("W2:AA2").ClearContents

If dws.Range("C3") = "" Or dws.Range("C3").Value = "Any" Then
    sws.Range("X2").Value = ""
Else
    sws.Range("X2").Value = dws.Range("C3").Value
End If

If dws.Range("C4") = "" Or dws.Range("C4").Value = "Any" Then
    sws.Range("Z2").Value = ""
Else
    sws.Range("Z2").Value = dws.Range("C4").Value
End If

If dws.Range("C5") = "" Or dws.Range("C5").Value = "Any" Then
    sws.Range("Y2").Value = ""
Else
    sws.Range("Y2").Value = dws.Range("C5").Value
End If

If dws.Range("C6") = "" Or dws.Range("C6").Value = "Any" Then
    sws.Range("AA2").Value = ""
Else
    sws.Range("AA2").Value = dws.Range("C6").Value
End If

If dws.Range("C7") = "" Or dws.Range("C7").Value = "Any" Then
    sws.Range("W2").Value = ""
Else
    sws.Range("W2").Value = dws.Range("C7").Value
End If


'Clear data field

dws.Range("B10").CurrentRegion.Clear

'Advanced Filter code
sws.Range("JobRegister[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    sws.Range("W1:AA2"), CopyToRange:=dws.Range("B10:T10"), Unique:=True

Application.ScreenUpdating = True
End Sub