使用高级筛选器vba过滤多页数据文档

各位程序员好!

在工作中,我被要求创build用于过滤数据的Excel文档。 我已经偶然发现了某些filter的一些困难,如下所述。

基本上我有一个文件列出了在某个游戏中所有可用的武器。 每种武器都可以在游戏中获得,例如武器1可以在任务1中获得。我需​​要过滤这些数据,以便search所有需要的武器,包括这个特定的任务或者某个行动。 所以如果我select例如任务3,我需要显示任务1 2和3的所有武器。 同样的行为机制。 我能够创造可怕的解决办法,如果发言涉及到,但是我们在游戏中有大约30个任务,所以同样的任务最终会挂在我自己身上。

为了更好地解释我的问题,我创build了一个带有示例数据的小型excel文档 ,它反映了我实现了1:1的真实文档“机制”。

要打破它,打开它后,你会看到三张:

filter – 这是filter结果显示的那个。

完整列表 – 这是我们要过滤的武器的整个列表。

上午 – 这是游戏的行为和任务列表。

我正在使用这个macros来过滤行为(它开始后,你点击过滤行为button):

Sub FilterActs() Sheets("Filter").Select Range("B10").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Clear Sheets("Full list").Range("A1:H175").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Sheets("Full list").Range("P1:P4"), CopyToRange:=Sheets("Filter").Range("B10"), Unique:=True Columns.AutoFit Range("B10").Select End Sub 

由于您可以在完整的列表P1:P4中findIF语句,因此它适用于行为。 然而,我不知道如何自动执行此任务,而不使用gazilion IF语句。

如果我可以提供更多的信息,请通过评论通知我。 我会大大apprieciate从你们的任何意见,甚至对这个问题的完全不同的解决scheme。

非常感谢大家的时间!

最好的祝福

罗夫

PS。 我对这个整体vba excel新东西很陌生,第一次开始使用它,所以随时给我任何有用的提示。

我已经使用您的示例工作簿创build了一个解决scheme。 请testing这个,看看它是否完成你的意图: http : //excelhero.com/samples/roff_excelhero.xlsm

请注意,此解决scheme使用不同的标准范围。

解决scheme的相关代码如下:

 Public Sub Filter() Dim rData As Range, rCrit As Range, rOut As Range With Sheets("Full list") Set rData = .[a1].CurrentRegion Set rCrit = .[s1:t2] End With Set rOut = [b10:d10] rOut(1).Select rData.AdvancedFilter xlFilterCopy, rCrit, rOut End Sub