あなたはエクセル内のデータを検索するときに、検索のやり方を別の人に何度も聞かれて対応が大変だと困ったことはありませんか?
検索は、「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検索」もできましたね!
複数条件で検索する方法 NOT検索
次は、NOT検索です。
「A」を含むが「Y」は含まないセルを検索するのを例に紹介します。
マクロのボタンを作る方法は、先程と同じなので、割愛します。
コードを入力します。

ボタンができたら押します。
ボタンは「and検索 除外項目あり」にしておきました。

検索するキーワードを入力します。
ここでは「A」です。

次に、除外するキーワードを入力します。
「Y」を入力しました。

入力したら「OK」をクリック。
13件ヒットしました!

「次のヒットを探しますか?」で「はい」を押すと、一つずつヒットしたセルにカーソルが移動していきます。

これで「Aは含まれているけど、Yは含まれていないもの」が検索できました!
複数条件で検索する方法 完全一致検索
次は、完全一致検索です。
セルが「ABC」と完全に一致するものを検索するときに使います。
マクロのボタンを作る方法は、先程と同じなので、割愛します。
コードを入力します。

ボタンができました。
「完全一致検索 除外項目あり」という表記に変更しています。

ボタンを押します。
完全一致で検索したいキーワードを入力します。

2件ヒットしました!

「次のヒットを探しますか?」で「はい」を押していくと、検索でヒットしたセルに飛んで行きます。

これで完全一致の検索も簡単にできるようになりましたね!
AND検索、OR検索、NOT検索、完全一致検索をまとめる
それでは次に、AND検索、OR検索、NOT検索、完全一致検索をまとめてみます。
マクロのボタンを作る方法は、先程と同じなので、割愛します。
コードを入力します。

ボタンができたら、ボタンを押します。
「いろいろな検索」にしておきました。

AND検索なら「1」、
OR検索なら「2」、
NOT検索なら「3」を入力します。

完全一致検索なら「1」、
そうでないなら「2」を入力します。

今回はOR検索を選択します。
「A Y」を入力し、AまたはYがあるセルを検索してみます。

19件ヒット!

「次のヒットを探しますか?」 →「はい」 でヒットを探していきます。

次々ヒットを追っていくと、順番にカーソルが移動していきます。

これで、AND検索、OR検索、NOT検索、完全一致検索と、ボタンを4つ作らなくてもよくなり、すっきりしましたね。
ユーザーフォームを使った検索ボックスでさらに検索しやすく
AND検索、OR検索、NOT検索、完全一致検索をまとめる方法では、ユーザーフォームを使った検索ボックスを作ると、さらに検索しやすくなります。
ユーザーフォームの作り方を紹介します。
1.alt + f11でマクロの画面を開く
2.ユーザーフォームをクリックする

3.ユーザーフォーム入力画面が開く

4.チェックボックス、テキストボックス、コマンドボックスを挿入する

5.それぞれサイズ、文字を入力して、配置を整列する
チェックボックスは4つ作り、AND検索、OR検索、NOT検索、完全一致検索、を配置しました。
キーワードボックスは2つ作り、上の段が「検索キーワードを入力!」、下の段は「除外キーワードを入力!」とし、何を入力したらよいかを書いておきます。
コマンドボックスは、「検索開始!」として、検索するのをわかりやすくしました。

6.コマンドボックスをダブルクリックし、コードを入力する
コマンドボックスをダブルクリックすると、コード入力画面になるので、コードを入力します。

7.新しくボタンを作り、コードを入力する
ユーザーフォームを開くためのボタンを作ります。

8.ボタンができる →クリックする
ボタンの名前は「検索ボタン」にしました。
検索ボタンをクリックします。

9.フォームが開く
これならチェックを入れるのと、キーワードを入れるので、わかりやすいですよね。

10.必要なチェックやキーワードを入力したら、検索開始!
ここでは、AND検索とし、AとYが含まれるものを検索してみます。

11.検索結果が表示される

6件ヒットしました。
ここからは前述までの確認結果と同じように、結果を見られます。
フォームを使うと検索の入力がしやすくなって、いいですよね!
あとは検索結果を確認しましょう!
まとめ
エクセルで検索ボックスを作り誰でも簡単に検索できるようにする方法のまとめです。
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック
2.新規作成をクリック
3.コードを入れる画面が出る
4.コードを入力
5.ボタンができた →ボタンをクリック
6.検索ボックスが表示される →キーワードを入力 →「OK」をクリック →ヒットする
7.ボタンの表示を「検索」に変更
AND検索、OR検索、NOT検索、完全一致検索ができるようになりました。
これで誰でも簡単に検索できますね!
今回のように、検索でヒットしたものを1つずつ追っていくのもいいですが、
検索でヒットした行を一度に表示できたら便利な場合もありますよね?
下のリンク先でやり方を紹介していますので、検索でヒットした行だけを表示したい方はどうぞ。
コメント