我在工作表2中有6列的大数据。我想基于多个条件将数据从工作表2提取到工作表5。
我的工作表2数据...
所以,我编写了以下代码以将数据从工作表2提取到工作表5。
Sheet2.Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Sheet5.Range("a3:d3"), _
CopytoRange:=Sheet5.Range("a10:k10"), Unique:=False
'Columns(6).AutoFit
问题是当我在上面的代码中运行时,它显示了工作表2中的所有数据,但是我的条件不满足。
例如,如果用户选择以下详细信息... 地点:美国
月份:19年7月
品种:我
备注:PR
输出应该像这样... Example Output
答案 0 :(得分:0)
CriteriaRange
期望使用标头和条件,此外,CopyToRange
可以为它分配一个单元格(您不知道预过滤每次过滤应包含的行数) 。因此,在sheet1和sheet5上进行以下设置:
Sheet1:
第5页:
运行以下代码:
Sub AdvancedFiltr()
Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheet5.Range("A1:F2"), CopyToRange:=Sheet5.Range("A4")
End Sub
Sheet5中的结果:
一些评论:
CriteriaRange
:标头需要与数据库中的标头完全匹配。CriteriaRange
:您不需要所有标题,只需要将其作为过滤依据。CopyToRange
:明智的做法是在应用另一个过滤器之前清除Sheet5上的范围。AdvancedFilter
上的一篇很棒的文章,旨在阐明其工作原理。