Excel VBA Find 搜尋資料、關鍵字教學與範例
介紹如何在 Excel 使用 VBA 的 Range.Find 方法尋找特定的資料或關鍵字等。
這個 Excel 中包含了臺灣證券交易所上市個股日成交資訊,以下將示範如何使用 Excel VBA 程式搜尋其中的資料。
上市個股日成交資訊
搜尋關鍵字
假設我們想在證卷名稱這一欄中尋找含有「國泰」的儲存格,可以使用以下的 VBA 程式,先決定搜尋的範圍之後,再使用 FIND 尋找:Dim cell As Range
' 在 B1:B2000 範圍中,尋找資料含有「國泰」的儲存格
Set cell = Range("B1:B2000").FIND("國泰", LookIn:=xlValues, LookAt:=xlPart)
' 如果有找到,則顯示儲存格位置與內容
If Not cell Is Nothing Then
MsgBox "位置:" & cell.Address & vbNewLine & "內容:" & cell.Value
End If如果有發現結果,就會以 MsgBox 顯示類似這樣提示訊息。
提示訊息
顯示所有搜尋結果
如果想要顯示指定範圍中所有符合的搜尋結果,可以使用迴圈搭配 FindNext 的方式逐一顯示每一個符合條件的搜尋結果。Dim cell As Range
Dim firstAddress As String
' 搜尋範圍訂為 B1:B2000
With Range("B1:B2000")
' 尋找資料含有「國泰」的儲存格
Set cell = .FIND("國泰", LookIn:=xlValues, LookAt:=xlPart)
' 若找到含有「國泰」的儲存格
If Not cell Is Nothing Then
' 儲存找到的第一個位置
firstAddress = cell.Address
Do
MsgBox "位置:" & cell.Address & vbNewLine & "內容:" & cell.Value
' 尋找下一個
Set cell = .FindNext(cell)
' 若找到下一個不重複的儲存格,則繼續
Loop While (Not cell Is Nothing) And (cell.Address <> firstAddress)
End If
End With由於 FindNext 在搜尋完整個範圍之後,會自動重新從開頭處繼續搜尋,所以我們必須先記住第一個搜尋結果的位置,後續的每次搜尋結果都要檢查其位置是否跟第一次結果的位置相同,藉此判斷 FindNext 是否已經將整個範圍搜尋完成。
完全符合文字內容
上面的範例都是搜尋內容含有指定關鍵字的儲存格,如果想要搜尋內容完全等於指定的文字,可以將 LookAt 參數改為 xlWhole。例如搜尋內容完全等於「國泰金」三個字的儲存格:
Dim cell As Range
' 在 B1:B2000 範圍中,尋找資料是「國泰金」的儲存格
Set cell = Range("B1:B2000").FIND("國泰金", LookIn:=xlValues, LookAt:=xlWhole)
' 如果有找到,則顯示儲存格位置與內容
If Not cell Is Nothing Then
MsgBox "位置:" & cell.Address & vbNewLine & "內容:" & cell.Value
End If
提示訊息參考資料:微軟官方文件