自动筛选中间有换行符的值 (Excel/VBA)
AutoFilter for a value which has a newline character in between (Excel/VBA)
我写了一个 VBA 代码,我必须在其中过滤一组数据。但是我的一些数据中有一个换行符,我想过滤这些值。我尝试使用 vbCrLf
,但没有用。
这是我的代码:
ActiveSheet.Range("$A:$M").AutoFilter Field:=2, Criteria1:="=1234 -" & vbCrLf & "product"
我在这里过滤第二列中的值 1234 -product(在“-”和 'product' 之间有一个换行符)。但是上面的代码没有过滤任何东西。
我做错了什么?
您可以为 Criteria1
使用以下字符串:
"=1234 -?product"
"=1234 -*product"
"=1234 -" & vbLf & "product"
选项 1 和 2 使用通配符 - 如果您使用 *
,您甚至可以在末尾删除 product
。根据评论,选项 3 是您没有尝试的唯一选项 ;)
都给我预期的输出:
之前:
之后:
示例代码:
Option Explicit
Sub Test()
Dim ws As Worksheet
Dim rng As Range
Dim strCriteria As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:A4")
'unset filter
ws.AutoFilterMode = False
'set filter - test 1 with wildcard
strCriteria = "=1234 -?product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
'unset filter
ws.AutoFilterMode = False
'set filter - test 2 with wildcard
strCriteria = "=1234 -*product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
'unset filter
ws.AutoFilterMode = False
'set filter - test 3 with vbLf
strCriteria = "=1234 -" & vbLf & "product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
End Sub
我写了一个 VBA 代码,我必须在其中过滤一组数据。但是我的一些数据中有一个换行符,我想过滤这些值。我尝试使用 vbCrLf
,但没有用。
这是我的代码:
ActiveSheet.Range("$A:$M").AutoFilter Field:=2, Criteria1:="=1234 -" & vbCrLf & "product"
我在这里过滤第二列中的值 1234 -product(在“-”和 'product' 之间有一个换行符)。但是上面的代码没有过滤任何东西。
我做错了什么?
您可以为 Criteria1
使用以下字符串:
"=1234 -?product"
"=1234 -*product"
"=1234 -" & vbLf & "product"
选项 1 和 2 使用通配符 - 如果您使用 *
,您甚至可以在末尾删除 product
。根据评论,选项 3 是您没有尝试的唯一选项 ;)
都给我预期的输出:
之前:
之后:
示例代码:
Option Explicit
Sub Test()
Dim ws As Worksheet
Dim rng As Range
Dim strCriteria As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:A4")
'unset filter
ws.AutoFilterMode = False
'set filter - test 1 with wildcard
strCriteria = "=1234 -?product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
'unset filter
ws.AutoFilterMode = False
'set filter - test 2 with wildcard
strCriteria = "=1234 -*product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
'unset filter
ws.AutoFilterMode = False
'set filter - test 3 with vbLf
strCriteria = "=1234 -" & vbLf & "product"
rng.AutoFilter Field:=1, Criteria1:=strCriteria
End Sub