【问题标题】:Filter Between on multiple columns Excel在多列Excel之间过滤
【发布时间】:2018-01-30 16:49:44
【问题描述】:

您好,我正在尝试根据两列的条件进行过滤。我正在尝试使用高级过滤器选项,但它并没有按照我想要的方式在逻辑上工作。我想我可能必须编写一个输入框并找到一种使用 vba 的方法,但我想确保在投入时间之前不会错过任何东西。

这是我正在尝试做的一个示例

   A     B
1  20   30
2  21   35
3  7    15
4  26   27
5  5    15
6  9    12 
7  24   26


output

   A    B
1  20   30
2  21   35 
4  26   27
7  24   26

在此示例中,我只想显示在 a 和 b 之间有 26 的行。不确定我是否可以合并列并过滤?

【问题讨论】:

  • 使用宏记录器并手动进行,它会为您创建代码。

标签: excel vba filter


【解决方案1】:

如果您添加列标题,则可以使用自动筛选(从数据选项卡或通过 VBA)

对于 VBA,定义您的范围,然后使用 AutoFilter 方法在每列上添加过滤器。您似乎正在寻找 Column A Column B 的行:

Columns("A:B").AutoFilter Field:=1, Criteria1:="<=26" 'Column A, less than or equal to 26
Columns("A:B").AutoFilter Field:=2, Criteria1:=">=26" 'Column B, greater than or equal to 26

这是一个更通用的形式:

Sub FilterColumnsForNumber(rTMP As Range, dNumber As Double)
    If rTMP.Worksheet.AutoFilterMode Then rTMP.Worksheet.AutoFilterMode 'Remove autofilter in case it is somewhere else in the worksheet
    rTMP.AutoFilter Field:=1, Criteria1:="<=" & CStr(dNumber) 'First column of Range, less than or equal to dNumber
    rTMP.AutoFilter Field:=2, Criteria1:=">=" & CStr(dNumber) 'Second column of Range, greater than or equal to dNumber
End Sub

【讨论】:

    【解决方案2】:

    我会将 AutoFilter 与辅助列一起使用。在 C2 中输入:

    =AND(MIN(A2:B2)<=26,MAX(A2:B2)>=26)
    

    然后抄下来:

    并应用过滤器:

    【讨论】:

      【解决方案3】:

      如果喜欢,我会使用嵌套

      =IF(B1<26, IF(C1>26, TRUE,FALSE), FALSE)
      

      然后过滤公式单元格为true的单元格

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-30
        • 2014-06-01
        • 2010-12-27
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多