Categories: Excel

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
提示訊息

參考資料:微軟官方文件

Share
Published by
Office Guide
Tags: VBA

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago