我發現要解決的事實,*
是在任何搜索通配符是,以取代他們,篩選數據,然後把它們放回的唯一途徑。
把你的數據在一張紙上,我稱之爲我的「數據」,開始在「A1」:
然後創建該排序的數據將被粘貼的第二片:
然後,在模塊添加以下代碼:
Sub user5632387()
Application.EnableEvents = False
Dim dws As Worksheet
Dim sws As Worksheet
Dim finalRow As Long
Dim dataRng As Range
Dim critRng As Range
Dim CpyToRng As Range
Set dws = Worksheets("Data") ' Change to sheet with data
Set sws = Worksheets("Sort") ' Change to sheet on which to sort
With dws
finalRow = .Cells(Rows.count, 1).End(xlUp).Row
Set dataRng = .Range(.Cells(1, 1), .Cells(finalRow, 1).End(xlToRight))
End With
With sws
Set critRng = .Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight).Offset(2))
Set CpyToRng = .Range(.Cells(5, 1), .Cells(5, 1).End(xlToRight))
End With
'change out all "*" for "|"
dataRng.Replace "~*", "|"
critRng.Replace "~*", "|"
'Filter
dataRng.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=critRng, CopyToRange:=CpyToRng, _
Unique:=False
'Replace "*"
critRng.Replace "|", Chr(42)
dataRng.Replace "|", Chr(42)
Range(CpyToRng, CpyToRng.End(xlDown)).Replace "|", Chr(42)
Application.EnableEvents = True
End Sub
你可以用一個按鈕來調用它,或者分配一個快捷鍵。它應該工作。
很顯然,如果在您的搜索區域中使用了|
,那麼找到一些其他字符不是通配符,也不是用作臨時佔位符。
嘗試在值的前面用'= ='設置您的標準:''= DPB1 * 01:01:01'。問題是美妙的'*'。它是一個通配符,並且會查找任何內容,因此您的'* 04:'很重要。 –