在相同范围内使用自动过滤器的多个标准,自动过滤仅使用最后一个标准

时间:2018-01-15 21:59:52

标签: vba excel-vba excel

我正在尝试根据同一范围内列表框中的用户输入过滤多个过滤器。 但是,出于某种原因,autosort方法仅使用测试中的最后一个条件对目标范围进行排序。

我到处搜索,测试了数组解决方案(将列表信息读入数组),为工作表上的过滤器编写一系列值,更改变量类型/运算符无济于事。什么都行不通。

感谢您抽出时间阅读本文,如果有人能帮助我,我将不胜感激。

The user input would look like this

   dim lifecycle as range
   dim List2String as string

        Set lifeCycle = defineColRange(startWs, "Lifecycle Comments (Saks)", True, False)

        For i = 0 To ListBox2_Lifecomments.ListCount - 1
            'looping though the listbox2 to retrieve values
            List2String = ListBox2_Lifecomments.List(i)
            startWs.UsedRange.AutoFilter Field:=lifeCycle.Column, Criteria1:="<>" & List2String
        Next i

        startWs.UsedRange.SpecialCells(xlCellTypeVisible).Interior.Color = rgbLightPink 'testing to see if filter works

1 个答案:

答案 0 :(得分:0)

经过多次挖掘和重新思考,基本上我在问错误的问题。

问题陈述应该是:&#34;如何过滤不等于多个标准的范围?&#34; 这里记录了:Explaination of why .autosort doesn't work with not equal to with multiple criterias.

讨论了几个解决方案:

  1. 使用另一列来帮助您确定要实现的结果。在我的例子中,它将循环遍历所有值 用户输入,并在另一列上输出true / false 比较,然后过滤该帮助列以解决此问题 问题

  2. 使用不可能的值进行过滤,这是情境性的。例如,如果要过滤数字,请为其设置outofbound标准 上面的解释链接中给出的非数字。

  3. 编写代码以隐藏已经过滤的标准,并一次过滤剩余标准所剩下的内容。

  4. 使用高级过滤器

  5. 希望这有助于将来可能遇到同样问题的其他人。