在多列Excel

时间:2018-01-30 16:49:45

标签: excel vba filter

您好我正在尝试根据两列标准进行过滤。我正在尝试使用高级过滤器选项,但它在逻辑上不像我想要的那样工作。我想我可能要编写一个输入框并找到一种方法来使用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的行。不确定如果我可以组合列并过滤那个?

3 个答案:

答案 0 :(得分:2)

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

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

并复制下来:

enter image description here

并应用过滤器:

enter image description here

答案 1 :(得分:2)

如果添加列标题,则可以使用AutoFilter(从“数据”选项卡或通过VBA)

对于VBA,请定义范围,然后使用AutoFilter方法在每列上添加过滤器。您似乎在寻找 A列&lt; = 26&lt; = 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 :(得分:0)

我会使用嵌套if

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

然后过滤公式单元格为true

的单元格