我进行了广泛的搜索并发现了大量关于排列的信息,但我想不出一种适应它们的好方法。令人沮丧的是因为我不认为答案很难但我似乎无法自己到达那里。
我正在尝试将包含选择标准的一系列单元格转换为高级过滤器可以读取的范围。选择标准的范围如下:
问题是,高级过滤器将每行评估为单独的过滤器集。逻辑看起来像这样:
[awake AND bob AND cat AND earth AND yes] OR [sleeping AND sally AND dog AND earth AND yes] OR ... OR [martha].
这是高级过滤器的工作方式,但我需要它像autofilter一样工作,我会遍历每个字段并检查每个过滤条件。逻辑应如下所示:
[awake OR sleeping] AND [bob OR sally OR george OR martha] AND [cat OR dog OR bird] AND [earth] AND [alive]
阅读完文档和多个论坛后,我能找到的唯一方法是在不同的行上生成每个选择标准的组合。新的选择标准应如下所示:
我已经通过手动设置选择标准范围测试了它并且它正常工作,但我无法弄清楚自动化它的代码。这是我到目前为止所做的 - 它开始没问题,但很快就开始重复并遗漏了某些排列:
If UBound(numRows) > 1 Then
With Worksheets("fltr")
.Range(.Cells(4, 1), .Cells(4, UBound(numRows))).Copy Destination:=Worksheets("afltr").Range("A1")
End With
'Determine number of rows needed for Advanced filter
numPermute = numRows(1)
For dstCol = 2 To UBound(numRows)
numPermute = numPermute * numRows(dstCol)
Next dstCol
'Copy all permutations to advanced filter
For dstCol = 1 To UBound(numRows)
If thisRow > numRows(dstCol) Then
thisRow = 2
For thisGrp = 1 To numRows(dstCol)
andSpltPos = 1
For numRepeat = 1 To numPermute / numRows(dstCol)
sbstFltrItms = Worksheets("fltr").Cells(4 + thisGrp, dstCol).Value 'MOD Problem?
Worksheets("afltr").Cells(thisRow, dstCol).Value = sbstFltrItms
thisRow = thisRow + 1
Next numRepeat
Next thisGrp
Next dstCol
End If
非常感谢帮助生成正确的排列或使高级过滤器以其他方式工作。
答案 0 :(得分:1)
这对我有用。我将表格放入"显示公式"模式(Ctrl +〜)所以你可以看到公式...... 要过滤的列表在A7:B14中,标准范围是A3:B4。
应用过滤器后,我只得到一行(" B"," val2")。