带特定子字符串的Excel VBA自动筛选
我有多个具有不同字符串的行,我想在其中筛选按此顺序排列的数据 “DI然后是数字”,即DI07493A 列值如下所示: 01利辛 利辛 稻壳 DI07493A ABS16 迪科迪 DI94193A 我正在这样努力带特定子字符串的Excel VBA自动筛选,vba,excel,Vba,Excel,我有多个具有不同字符串的行,我想在其中筛选按此顺序排列的数据 “DI然后是数字”,即DI07493A 列值如下所示: 01利辛 利辛 稻壳 DI07493A ABS16 迪科迪 DI94193A 我正在这样努力 sheet1.Range("A1:A" & LastRow).AutoFilter Field:=4, Criteria1:= DI & #, Operator:=xlFilterValues 它不起作用。有没有办法得到这个结果?第二次尝试。查找 Sub find_my
sheet1.Range("A1:A" & LastRow).AutoFilter Field:=4, Criteria1:= DI & #, Operator:=xlFilterValues
它不起作用。有没有办法得到这个结果?第二次尝试。查找
Sub find_my_stuff()
Dim xFoundCell as Variant
Dim Runner as Long
Dim SomeString as String
Set xFound Cell = Sheets("Sheet1").Range("A1:A" & LastRow).Find("DI", lookat:=xlPart_
, MatchCase:=True
Sheets("Sheet2").Range("A" & Runner) = xFoundCell.Address
SomeString = Sheets("Sheet2").Range("A" & Runner)
SomeString = Replace(SomeString, "A", "")
SomeString = Replace(SomeString, "$", "")
Sheets("Sheet2").Range("B" & Runner) = SomeString
Sheets("Sheet2").Range("C" & Runner) = Sheets("sheet1").Cells(SomeString,1)
End Sub
正如我所说。。。超级难看,但也许你能知道我想用什么来完成第二次尝试。找到
Sub find_my_stuff()
Dim xFoundCell as Variant
Dim Runner as Long
Dim SomeString as String
Set xFound Cell = Sheets("Sheet1").Range("A1:A" & LastRow).Find("DI", lookat:=xlPart_
, MatchCase:=True
Sheets("Sheet2").Range("A" & Runner) = xFoundCell.Address
SomeString = Sheets("Sheet2").Range("A" & Runner)
SomeString = Replace(SomeString, "A", "")
SomeString = Replace(SomeString, "$", "")
Sheets("Sheet2").Range("B" & Runner) = SomeString
Sheets("Sheet2").Range("C" & Runner) = Sheets("sheet1").Cells(SomeString,1)
End Sub
正如我所说。。。超级难看,但也许你能知道我想完成什么试试下面的代码:
Sub Filter()
Dim lastRow As Long, i As Long, ws As Worksheet
Set ws = Worksheets("sheet_name")
With ws
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
'this conition checks if cell contains "DI" followed by a digit
If Not Left(.Cells(i, 1).Value, 3) Like "DI[0-9]" Then
.Rows(i).Hidden = True
End If
Next
End With
End Sub
请尝试以下代码:
Sub Filter()
Dim lastRow As Long, i As Long, ws As Worksheet
Set ws = Worksheets("sheet_name")
With ws
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
'this conition checks if cell contains "DI" followed by a digit
If Not Left(.Cells(i, 1).Value, 3) Like "DI[0-9]" Then
.Rows(i).Hidden = True
End If
Next
End With
End Sub
请尝试以下操作:
有一列(比如A1:A8)和一个标题(例如称为标题),然后是值
然后在B列上,具有相同的标题和B2中的值:B11 beDI0*
,DI1*
,DI2*
,DI3*
,DI4*
,DI5*
,DI6*
,DI7*
,DI8*
,DI9*
然后使用代码应用以下命令:
Range("A1:A8").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B11").
尝试以下操作:
有一列(比如A1:A8)和一个标题(例如称为标题),然后是值
然后在B列上,具有相同的标题和B2中的值:B11 beDI0*
,DI1*
,DI2*
,DI3*
,DI4*
,DI5*
,DI6*
,DI7*
,DI8*
,DI9*
然后使用代码应用以下命令:
Range("A1:A8").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B11").
只需在子字符串的相关部分添加一个asterix即可
在您的代码中,更改以下内容:
Criteria1:=DI*
您只需在子字符串的相关部分添加一个星号即可
在您的代码中,更改以下内容:
Criteria1:=DI*
您的示例(DI07493A)和其他示例(DI94193A)的末尾有一个A
,是否应该是按“DI-then-numbers”顺序排列的筛选数据,或者您不需要DICOFDI,但需要按“DI-then-numbers,并可选地以字母结尾”顺序排列的数据.是Di,然后数字rest是可选的。DICOFDI与我的需求不匹配。不确定是否有可能使用过滤器(在数值中间检查一个数字),您可能需要使用一个循环来隐藏与您的需求不匹配的行。我在表中有大量的数据,如果我循环通过每一个,它将消耗大量的时间。你能提出更快的建议吗?看看我的答案。我认为这可能是您所需要的。它不应该是按“DI然后数字和字母”顺序排列的筛选数据吗?因为您的示例(DI07493A)和其他示例(DI94193A)的末尾有一个A
,或者您不想要DICOFDI,但想要任何按“DI然后数字,并可选地以字母结尾”顺序排列的数据吗.是Di,然后数字rest是可选的。DICOFDI与我的需求不匹配。不确定是否有可能使用过滤器(在数值中间检查一个数字),您可能需要使用一个循环来隐藏与您的需求不匹配的行。我在表中有大量的数据,如果我循环通过每一个,它将消耗大量的时间。你能提出更快的建议吗?看看我的答案。我想这可能是你需要的。这不会做,因为它会得到“DICOFDI”以及我不想要的。一段时间前,我做了一些。查找选项。。。但是读起来有点难看。。。你知道“查找”功能吗?是的,但那怎么行呢?因为我想这和Reg-ex有关。我想根据模式进行过滤,前两个字符是“DI”,下一个是数字。给我一秒钟,我会得到我的代码,并向你展示一个对你有用的示例。你是对的,伙计,这很难看,我们可以使用更干净、更高效的模式搜索进行过滤。我只需要一些东西来给我指出正确的方向。这不会做,因为它也会得到我不想要的“DICOFDI”。不久前,我做了一些事情。查找选项。。。但是读起来有点难看。。。你知道“查找”功能吗?是的,但那怎么行呢?因为我想这和Reg-ex有关。我想根据模式进行过滤,前两个字符是“DI”,下一个是数字。给我一秒钟,我会得到我的代码,并向你展示一个对你有用的示例。你是对的,伙计,这很难看,我们可以使用更干净、更高效的模式搜索进行过滤。我只需要一些东西来给我指出正确的方向。我们能把它应用到过滤条件上吗?因为我想把这些数据放在另一张纸上。如果我一次只做一行,我想这需要更长的时间?@SumanKumar不,这是一种定制过滤。但您可以在代码中指定要过滤的工作表。请参阅更新的答案。我们可以将其应用于筛选条件吗?因为我想把这些数据放在另一张纸上。如果我一次只做一行,我想这需要更长的时间?@SumanKumar不,这是一种定制过滤。但您可以在代码中指定要过滤的工作表。请参阅更新的答案。为什么标准范围是从B1开始的,而B1是标题?无论如何,它并不像预期的那样过滤。它给了我一个空白的屏幕,全部被过滤。@SumanKumar您对值和过滤标准使用了相同的标题吗?如果您使用了正确的范围,那么它应该可以工作。请尝试我给出的确切示例,如果它有效,请一点一点地修改它,直到达到您想要的方式,或者如果它不起作用,请让我知道您尝试方法的更多细节(如果可能,请使用代码和图像)。@SumanKumar如您所见,您需要标题。非常感谢,伙计,这是我正在寻找的。因为如果我经历了一个循环,它会非常宽大。再次感谢您的大力支持和洞察力。很高兴我能提供帮助。:)为什么标准范围是从B1开始的,B1是标题?无论如何,它并不像预期的那样过滤。它给了我一个空白的屏幕,所有的内容都被过滤了。@SumanKumar你用了相同的标题吗