excel - 在两列之间使用“或”条件进行自动过滤
问题描述
我很确定我能做到这一点的唯一方法是使用帮助栏,但在我认输之前想问问专家。
我有 2 列我想过滤,但需要显示两个标准的结果。因此,如果“S”列(字段#19)或“CK”列(字段#89)等于“红色”,我想看到它们。
有谁知道怎么解决?
Sub Filter_by_Red_CD_LE()
ActiveSheet.Unprotect
Dim ddate As String
ddate = Month(Date)
Dim r As Range
Set r = ActiveSheet.Range("$a$10:$cp$500")
If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Selection.AutoFilter
ActiveSheet.Range("$a$10:$cp$500").AutoFilter Field:=19, Criteria1:="Red"
ActiveSheet.Range("$a$10:$cp$500").AutoFilter Field:=89, Criteria1:="Red"
Range(Cells(r.Rows.Count + 1, 1), Cells(Rows.Count, Columns.Count)).EntireRow.Hidden = True
Range("$a$10:$cp$500").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollRow = 11
Range("A8").Value = "Current Filter = REd LE/CD"
Worksheets("Pipeline").Shapes("Drop Down 11").ControlFormat.Value = 0
End Sub
解决方案
此代码假定数据区域的第一行包含列标题。
首先,您需要定义数据范围和条件范围。
然后使用 (1) 要将选择条件应用到的列的列标题和 (2) 选择值来设置条件范围。
S='Red' OR CK='Red' 看起来像这样。
重庆 | 铬 |
---|---|
Col S 标头 | Col CK 标头 |
红色的 | |
红色的 |
S='Red' AND CK='Red' 看起来像这样。
重庆 | 铬 |
---|---|
Col S 标头 | Col CK 标头 |
红色的 | 红色的 |
VBA 代码如下所示。
Dim dataRange As Range
Dim criteriaRange As Range
' Replace worksheet name as required
With Worksheets("Sheet1")
' Define the data range.
Set dataRange = .Range("A10:CP500")
'Define criteria range
Set criteriaRange = .Range("CQ10:CR12")
' Copy column headers
.Cells(10, "CQ").Value = .Cells(10, "S").Value
.Cells(10, "CR").Value = .Cells(10, "CK").Value
' Criteria values
.Cells(11, "CQ").Value = "Red"
.Cells(12, "CR").Value = "Red"
End With
' Apply the filter.
dataRange.AdvancedFilter xlFilterInPlace, criteriaRange
完成后,您可以像这样轻松清除条件范围。
criteriaRange.Clear
高级过滤器文档在这里Range.AdvancedFilter 方法,但它不是很有帮助。如果你用谷歌搜索 Excel VBA Range.AdvancedFilter,还有很多其他的例子。
推荐阅读
- reactjs - 定义道具和状态的问题
- xamarin.forms - 不显示带有 Prism 和 xamarin 表单的汉堡菜单
- python - 虽然我已经安装了pip并在cmd中导入kivy,但还是报错,代码没有执行
- java - 在 Java 中,如何使用断言测试 Junit Mockito 中的 void 方法?
- python - 将滴答时间转换为 Python hh:mm:ss
- bash - 使用 $USER 时回显“root”
- c++ - 如何在文件中写入 C++ 崩溃错误?
- c - 为什么编译器会根据以下代码中的优先级规则进行编译?
- haskell - Haskell 中的隐式静态类型转换(强制)
- firebase - Firebase 云函数 - 在 OnUpdate 云触发器中更新不同的对象