エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法

エクセル

あなたはエクセル内のデータを検索するときに、検索のやり方を別の人に何度も聞かれて対応が大変だと困ったことはありませんか?

検索は、「ctrl」+「f」で検索ボックスが出るのですが、エクセルを普段使わない人だと、中々使わないんですよね。

PC苦手人「Aさん、検索のやり方どうやるんだっけ?」
Aさん「・・・前にも言いましたよね・・・」
みたいな会話は、あちこちで繰り広げられています。

エクセルのマクロを使えば、検索ボックスを作れるので、誰でも簡単に検索できるようになります。

今回は「エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法」を紹介します。

エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法

エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法です。

下のような商品台帳から検索するのを例に紹介します。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力

コードを入力します。

検索ボックスを表示して、キーワードを入力、ヒットした件数を表示、ヒットしたセルに順番に移動する、という意味です。

赤枠部のコードです。

    Dim searchText As String
    Dim rng As Range
    Dim cell As Range
    Dim hitCount As Long
    Dim firstCell As Range
    
    ' 検索ボックスの表示とキーワードの入力
    searchText = InputBox("検索するキーワードを入力してください:", "検索")

    ' 入力が空白の場合は処理しない
    If searchText = "" Then Exit Sub

    ' 検索範囲をアクティブシートの全範囲に設定
    Set rng = ActiveSheet.UsedRange

    ' ヒットしたセルの数をカウント
    hitCount = Application.WorksheetFunction.CountIf(rng, "*" & searchText & "*")

    ' ヒットした数を表示
    MsgBox "検索結果: " & hitCount & " 件が見つかりました。", vbInformation, "検索結果"

    ' ヒットしたセルに順番に移動
    For Each cell In rng
        If InStr(1, cell.Value, searchText, vbTextCompare) > 0 Then
            If firstCell Is Nothing Then Set firstCell = cell
            cell.Select
            If MsgBox("次のヒットを探しますか?", vbYesNo + vbQuestion) = vbNo Then Exit For
        End If
    Next cell

    ' 最初のヒットしたセルに移動
    If Not firstCell Is Nothing Then firstCell.Select

コードを入力したら、コードの入力画面を閉じて下さい。

5.ボタンができた →ボタンをクリック

ボタンができたら、ボタンをクリックします。

6.検索ボックスが表示される →キーワードを入力 →「OK」をクリック →ヒットする

「検索するキーワードを入力してください」と出ます。

ここでは「ABC」を入れて、「OK」をクリックしてみます。

「1件が見つかりました」!

「OK」をクリックして表を見ると、ちゃんと「ABC」のところにカーソルがきています。

複数のヒットがあると、「次のヒットを探しますか?」→「はい」で、次のヒットしたセルに移動します。

7.ボタンの表示を「検索」に変更

「ボタン」だと何のボタンかわからないので、「検索」に変更してみます。

ボタンにカーソルを合わせ、右クリックメニューで、「テキストの編集」。

「検索」ボタンになりました。

これなら見た人は、検索だな!ってわかりますよね。

これなら検索のショートカットキーを忘れてしまっても大丈夫です。

複数条件で検索する方法 OR検索

ついでに、複数条件で検索する方法を紹介します。

使う表を変えて、この中から、「A」or「Y」を含むセルを検索していきます。

OR検索です。

コードは下のようになります。

先程と同様に、ボタンができるのでクリックすると、検索ボックスがでます。

キーワードをスペースで区切って入力します。

ここでは「A Y」と入れました。

19件ヒット!

ヒットしたところを見ていきます。

AとYが入ったセルがヒットしています。

Aだけが入ったセルもヒットしています。

Yから始まるセルもヒットしています。

複数条件でもちゃんと検索できました。

最後に赤枠部のコードの紹介です。

Dim searchKeywords As Variant
Dim rng As Range
Dim cell As Range
Dim hitCount As Long
Dim firstCell As Range

' 検索ボックスの表示とキーワードの入力
searchKeywords = Split(InputBox("検索するキーワードをスペースで区切って入力してください:", "複数条件検索"), " ")

' 入力が空白の場合は処理しない
If UBound(searchKeywords) < LBound(searchKeywords) Then Exit Sub

' 検索範囲をアクティブシートの全範囲に設定
Set rng = ActiveSheet.UsedRange

' ヒットしたセルの数をカウント
hitCount = 0

' 各キーワードで検索し、ヒットしたセルの数をカウント
For Each cell In rng
    For Each keyword In searchKeywords
        If InStr(1, cell.Value, keyword, vbTextCompare) > 0 Then
            hitCount = hitCount + 1
            Exit For
        End If
    Next keyword
Next cell

' ヒットした数を表示
MsgBox "検索結果: " & hitCount & " 件が見つかりました。", vbInformation, "検索結果"

' ヒットしたセルに順番に移動
For Each cell In rng
    For Each keyword In searchKeywords
        If InStr(1, cell.Value, keyword, vbTextCompare) > 0 Then
            If firstCell Is Nothing Then Set firstCell = cell
            cell.Select
            If MsgBox("次のヒットを探しますか?", vbYesNo + vbQuestion) = vbNo Then Exit For
        End If
    Next keyword
Next cell

' 最初のヒットしたセルに移動
If Not firstCell Is Nothing Then firstCell.Select

複数条件で検索する方法 AND検索

次は、AND検索です。

「A」と「Y」を含むセルを検索するのを例に紹介します。

マクロのボタンを作る方法は、先程と同じです。

コードを入力します。

ボタンを作り、「and検索」に名前を変えておきました。

次にボタンを押します。

「A」と「Y」を入力します。

半角スペースで区切ります。

「A Y」を入力したら、OKをクリック。

6件ヒットしました。

先程「A」or「Y」で検索したら、19件ヒットだったので、「A」and「Y」だとそれより少なくなっています。

ちゃんと検索できているか、確認してみます。

「次のヒットを探しますか?」と出るので、順に「はい」をクリックしていくと、カーソルが動いていきます。

これで、「AND検索」もできましたね!

まとめ

エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法のまとめです。

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.新規作成をクリック

3.コードを入れる画面が出る

4.コードを入力

5.ボタンができた →ボタンをクリック

6.検索ボックスが表示される →キーワードを入力 →「OK」をクリック →ヒットする

7.ボタンの表示を「検索」に変更

これで誰でも簡単に検索できますね!

コメント

タイトルとURLをコピーしました