本記事では、最も有名でかつ使用頻度が高い表計算ソフトの「Microoft Excel」で使用できる『表内のデータを簡単に検索するマクロ』ツールの概要・使い方・取得方法等を紹介しております。
(2022年5月13日:更新)
・検索実行時に検索対象の文字が存在しない場合は、検索対象がない旨のメッセージを表示させてフィルターしないように変更
・検索方法として「AND検索」「OR検索」を選択可能に変更
(2022年9月23日:更新)
・検索条件(AND検索、OR検索)の対象を「一つのセル」「複数項目」から選択可能に変更
・ツール全体のUIを変更
(2022年11月25日:更新)
・検索対象のデータが表でなくテーブルが使用されている場合でも動作するように改修
(2023年2月14日:更新)
・検索を一度もしていない状態で、フィルター解除アイコンをクリックするとデバッグモードになる現象を改修
(2023年11月24日:更新)
・ツール全体のUIを変更
・設定シート(settingシート)で項目を変更した際に対象項目のみ背景色が変更するように改修
『表内のデータ簡単検索ツール』の概要

本ツールは、Excel内にあります表、またはテーブルに対して指定した文字で検索すると、検索対象の文字が入った行のみが表示されるツールとなります。
- 表、テーブル内の文字をフィルター検索のように一覧表示できます。
- 検索文字に複数の文字を指定してAND検索またはOR検索ができます。
- 検索したい項目を指定することや最大項目数を自由に設定して、検索できます。
通常は対象のファイルを一つずつ開いてExcelの標準機能の「検索」を実施してセル位置を一つずつ移動しなければいけない作業を、本ツールを使用すると一度で対象行を表示することができます。
※検索ワードを入れて検索処理を行えば対象行のみが表示され、該当セルが赤く表示されることで、検索が視覚的にも容易にできるようになります。
表内に多量のデータがあり、その中から何度も検索する必要がある場合等に有効にご活用いただけます。
下に説明動画を載せますので、ご確認ください。
本ツールの説明動画はこちら
本ツールの利用手順
本ツールを使用する手順は以下の通りになります。
Step1:表内に検索対象のデータを入れる
- 表内データ簡単検索ツールのVBAコードを含んだExcelファイル(***.xlms)を開きます。
- 対象の表内に検索対象とするデータを入れ込んだ状態にします。

この時、表は範囲でもテーブルでもどちらでも問題ありません。
Step2:検索文字を入力して、検索アイコンをクリックする
- 「検索ワード」の欄に検索したい文字を入力ます。
- 「検索アイコン」(虫眼鏡アイコン)をクリックします。

検索ワードの内容で、一部分でも一致するセルがあれば、対象のセルが赤色で表示され対象の行のみ表示されます。

Step3:解除アイコンをクリックする(※検索解除時)
検索ワード欄の右にある「フィルター解除アイコン」をクリックすれば、検索状態は解除され全データが表示されます。(=初期状態に戻ります。)
- 「フィルター解除アイコン」をクリックします。

Option:検索ワードにスペースを入れて、検索条件と条件の対象を指定して検索
検索条件は「AND条件」と「OR条件」より、条件の対象は「一つのセル」と「複数項目」より選択できます。
検索条件:「AND条件」、条件の対象:「一つのセル」
例えば、「問合せ 3」で検索した場合は、一つのセル内で”問合せ” という文字が入っていて、かつ “3” という文字が入っているセルを検索します。
- 検索ワード欄に「問合せ 3」と入力します。
- 検索条件で「AND条件」を選択します。
- 条件の対象で「一つのセル」を選択します。
- 検索アイコンをクリックします。

検索結果として、両方の条件を満たす値が入っているセルが検索されて表示されます。

検索条件:「OR条件」、条件の対象:「一つのセル」
同様に「問合せ 3」で検索した場合は、一つのセル内で”問合せ” と “3” のどちらかの文字が入っているセルを検索します。
- 検索ワード欄に「問合せ 3」と入力します。
- 検索条件で「OR条件」を選択します。
- 条件の対象で「一つのセル」を選択します。
- 検索アイコンをクリックします。

検索結果として、どちらかの条件を満たす値が入っているセルが検索されて表示されます。

検索条件:「AND条件」、条件の対象:「複数項目」
同様に「問合せ 3」で検索した場合は、複数の項目で”問合せ” と “3” の両方の文字が入っているセルを検索します。
- 検索ワード欄に「問合せ 3」と入力します。
- 検索条件で「AND条件」を選択します。
- 条件の対象で「複数項目」を選択します。
- 検索アイコンをクリックします。

検索結果として、その行の複数項目をまたいで両方の条件を満たす値が入っているセルが検索されて表示されます。

検索条件:「OR条件」、条件の対象:「複数項目」
同様に「問合せ 3」で検索した場合は、複数の項目で”問合せ” と “3” の両方の文字が入っているセルを検索します。
- 検索ワード欄に「問合せ 3」と入力します。
- 検索条件で「OR条件」を選択します。
- 条件の対象で「複数項目」を選択します。
- 検索アイコンをクリックします。

検索結果として、その行の複数項目をまたいでどちらかの条件を満たす値が入っているセルが検索されて表示されます。

Setting1:検索対象項目を変更する場合
標準では、表内のタイトル行の色が濃紺になっている箇所(A,B,C,D,E,F,G,H,I,J 列)が検索対象として設定されていますが、<setting>シート内の値を変えれば、検索対象列を自由に変更することができます。
別シートの<setting>シート内のB4セルの値を変更します。検索対象列をカンマ区切りにして値を設定すれば変更可能です。
なお、検索する項目から外れた項目は、背景色が薄青色に変更されます。
Setting2:表の項目の列数を変更する場合
現行のツールでは表の列が「J列」までで作成されていますが、項目数を増減する場合は、以下の対応をしてください。
項目を減らす場合
- 不要な項目の列を選択して、右クリック→「削除」→「左方向にシフト」を選択します。(作業列が表示される場合がありますが、無視してください。)
- 必要に応じて、<setting>シート内の「検索する項目の列」を変更してください。

項目を増やす場合
- K列を再表示してください。
- 増やす分だけ、K列以降に表の項目とデータを記載してください。(J列部分をコピーして貼り付け等)
- 必要に応じて、<setting>シート内の「検索する項目の列」を変更してください。

ご利用に関するQ&A
当記事内の「本ツールのダウンロードはこちら」よりマクロ付きExcelファイルがダウンロードができます。
※有料コンテンツの場合は、ご購入後にツールのダウンロード、VBAソースコードの確認ができます。
当サイトでは早期対応の使い方サポートサービスを提供しておりますので、使用方法等が分からない場合でも安心してご利用いただけます。
簡易的な内容ですと、当記事のコメント欄よりお問い合わせください。またはサイト最上部にあります「お問い合わせフォーム」より不明点をお問い合わせください。
※早期対応は有料コンテンツをご利用いただいた方限定のサービスとなっております。
本ツールは利用時の各環境の設定により、マクロの実行がブロックされる可能性があります。
マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。
なお、上記を実施しても解除できない場合はマクロを含まないExcelファイルと必要なVBAソースコードを別途ご案内いたします。
ご利用上の注意事項
本ツールはMicrosoft Excelのマクロ機能を用いて、プログラミング言語「VBA」にて作成しております。ご利用に関しては、以下の注意事項をご確認ください。
- 本ツールの開発環境は、OS:Windows10 、Excelのバージョン:Microsoft 2016、Microsoft Office 365となっており、当該環境では動作確認ができていますが、他の環境での動作は完全には確認できていません。
- 本ツールは利用時に各環境の設定により、マクロの実行をブロックする可能性があります。マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。
- 本ツールの利用で発生した問題の責任は負いかねます。事前に使い方をテスト、理解した上で、ご利用ください。
- 本ツールはバージョンアップに伴い、ツール自体の仕様が変更になる可能性やアップデートされる可能性がございます。予めご了承ください。
- ツールおよびプログラムの著作は当サイトを管理しております「デジたわ」にあります。無断での転載・再販・配布・共有は固く禁止しております。
時短ツールの特徴と関連ツールを紹介
『時短ツールラボ』では本ツール以外にもExcelマクロを利用した時短ツールを複数ご用意しております。
今後も随時新規で開発、公開していきますので是非ご覧ください。
全ツールはこちら(時短ツールラボ)からご確認ください。
時短ツールラボのツールの特徴
① 商品は全て買い切り
販売されるExcelマクロのツールは全て月額料金が発生しない「買い切り型」となっています。ランニングコストの心配をせずにツールを使用いただけます。
② 無料ツールもご用意
初めての方でも安心してご利用いただけるように「無料」で使用できるツールも多数用意しております。ツールの使用感を確かめたうえでご購入いただけます。
③ 使い方のサポートが無料
有料ツールをご利用いただいた方限定で早期対応の使い方サポートサービスをご用意しております。初めてExcelマクロツールをご利用される方も安心ください。
④ 返金制度あり
ご購入いただいてから24時間以内にご返金の申請をした場合は、全額返金させていただく返金制度もご用意しておりますので、ご安心ください。
⑤ ソースコードを閲覧可能
ツールをご利用いただいた方限定でVBAソースコードをご確認いただけます。ご自身でマクロ開発、VBAプログラミング学習をされる際にご活用ください。
⑥ 自由にカスタマイズ可能
マクロを含んだExcelファイルとVBAソースコードはご自身で使いやすいようカスタマイズ可能です。(※Excelファイル、VBAソースコード等の商用利用は不可となります。)
大型アップデート版のダウンロードはこちら
表内のデータを簡単検索ツール(大型アップデート版) 290円
表内において指定した文字を検索して一覧で見たい場合、当マクロツールを使って効率化できます。また検索する際の条件や色変更等が簡単に変更できるようになっております。

本ツールを使用する場合は、上記記事にて購入後にダウンロードしてください。
通常版と大型アップデート版の変更点は以下になります。
- 検索した際にセル単位でなく対象文字のみ文字色が変更されます。
- 大文字/小文字と全角/半角の区別を切り替えできます。
- 完全一致、部分一致での検索を切り替えできます。
- 検索ボタンを押さず、カーソルを外すもしくはEnterキーで検索できます。
- 検索対象の文字色を赤色だけでなく、数に応じて文字色を指定できます。
自力で業務効率化できるツール等を作成する場合は、「オンラインITスクール」を利用するとモチベーションを保ちつつ、効率的に学習とアウトプットができると思います。
上記の「侍テラコヤ」は月額2,980円~ という日本最安級の料金でプログラミング学習ができ、今なら初めての方でも安心できる「1か月全額返金保証」があります。
自分に合わないと感じた場合は返金してもらえるため、ノーリスクで試すことができます。是非一度体験してみることをオススメします ^ ^
本ツールのダウンロードはこちら
本ツールのダウンロード、VBAソースコードの確認等をする場合は、下記をクリックしてダウンロードを行ってください。
【Excel VBA】表内データ簡単検索ツール
※ダウンロードした本ツールを動作させることができない場合は、マクロのブロックを解除する方法より、
マクロ機能の動作が可能になるよう設定を変更してください。
正常に動作しない場合は、当記事のコメント欄または「お問い合わせフォーム」よりご連絡ください。
VBAソースコードはこちら
本ツール内にVBAソースコードは書き込まれておりますが、参考までに掲載いたします。
<「Module1」に書き込まれているVBAソースコードはこちら>
<「Sheet1」に書き込まれているVBAソースコードはこちら>
<「Sheet2」に書き込まれているVBAソースコードはこちら>
<本ツールが業務効率化や時短につながりましたら、下のグッドボタンを押していただけたら幸いです>
管理人RH様
VBA初心者でもとてもわかりやすい内容でご説明頂きありがとうございます
1点お伺いしたいことがあります
B列、C列にそれぞれ会社名、部署名を入力したいのですが、
会社名、部署名に合わせて列幅を調節すると
セルB6″検索ワード”背景の黄色が横にかなり広がってしまいます
黄色の幅を会社名の幅だけ(B列のみ)に設定するにはどのようにしたら良いでしょうか
管理人RHです。
ぴよさん、ツールの使用とコメントありがとうございます。
ダウンロードしたファイルについては、標準ではD列、E列(D6,E6セル)が検索ワード入力列になっています。
これを黄色部分をB列のみにする場合は、以下の操作をしてください。
①D6,E6のセル結合を解きます。
②C6,D6,E6セルの結合をします。
③B列の幅を広くします。
④検索ワードの文字とオレンジ背景色の右側(グループ化されています)をドラッグしてB列に収まる位置でドロップします。
⑤ソースコード4列目の『Private Const KEYWORD_POINT = “D6″』を『Private Const KEYWORD_POINT = “C6″』に変更します。
※大型アップデート版ツールでの必要操作になります。
これらを行ってみて黄色の幅を会社名の幅だけ(B列のみ)にうまく設定できない場合は再度コメントいただけますと幸いです。
管理人RH様
黄色の幅を会社名の幅だけ(B列のみ)に設定できました、ありがとうございました
また、新たな疑問が生まれたので質問させてください
現社員と退職者の住所録を作成中なのですが、
現社員と退職者で同じブック内にそれぞれ別シートに分け、それぞれで検索がかけられるようにしたいです。
シートを複製するだけではうまくいきませんでした。
複製先のシートで検索をかけようとすると、「検索ワードを入力してください」と出てきます。
お手数おかけしますが、宜しくお願いいたします。
管理人RHです。
匿名さん、ツールの使用とコメントありがとうございます。
同ブック内の複数シートに対してそれぞれ検索をかけられるようにする際は、現状は複数シートを検索できる仕様にはなっていないため、複数シートでも検索できるツールを改めて作成しますので、お待ちいただければ幸いです。
はじめまして
本日このExcelをDLさせていただき
検索フォームをクリックすると、文字が入力してあっても【検索ワードを入力してください】と出てしまいます
申し訳ありませんがなにか対処法等ありますでしょうか?
管理人RHです。
ぼんさん、ツールの使用とコメントありがとうございます。
おそらくですが、ダウンロードできるツールとコピペするソースコードが誤っている可能性があります。
マクロツールとしてURL「https://resthill.blog/excel-vba-tool2/#rtoc-10」の直下にあるものダウンロードした場合は、ソースコードはその更に下にある「ソースコードはこちら」を押して表示されたソースコードをコピペしてください。
改めて実行していただき、それでも現象が解消されない場合は改めてコメントいただきたくお願いします。
管理人RH様
このような情報をいただき、ありがとうございます。ノンプログラマーで、自分ひとりでは、とてもこのようなマクロを組めないところであります。
iRow = BaseSht.UsedRange.Rows.Count + BaseSht.UsedRange.Row – 1
のところで、実行時エラー91「オブジェクト変数またはWithブロック変数が設定されていません」と出てしまい、検索フォームの作成ができません。 解決策があれば、教えてください。
よろしくお願いいたします。
管理人RHです。
mimoさん、ツールの使用とコメントありがとうございます。
エラー発生箇所と内容から、ずばり原因を特定するのが簡単ではなさそうですが、以下を行った後に再度検索実行してみてください。
『iRow = BaseSht.UsedRange.Rows.Count + BaseSht.UsedRange.row – 1』
『iCol = BaseSht.UsedRange.Columns.Count + BaseSht.UsedRange.Column – 1』
をそれぞれ以下に変更してください。
『iRow = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.row – 1』
『iCol = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column – 1』
なお、このソースコード変更でエラーが解消されない場合は、エラー発生時に行った操作をもう少し細かく教えていただけると幸いです。
お世話になります。
https://resthill.blog/excel-vba-tool2/
のソースは、英字の大文字と小文字を区別して検索結果が表示します。
これを、英字の大文字と小文字を区別しないで、検索結果を表示するには
どのようにすればよろしいのでしょうか?
searchResult = Filter(tgtWord, keyword)あたりを変更すれば良いかと
思いましたが、Filter関数自体、大文字と小文字を区別しない関数との
事でその他の箇所を修正する必要があるのでしょうか?
管理人RHです。
ymさん、ツールの使用とコメントありがとうございます。
英字の大文字と小文字を区別しないで検索結果を表示するには、おっしゃっていただいてる箇所を以下のように変更していただければ実現可能です。(変更箇所:88行目、133行目)
searchResult = Filter(tgtWord, keyword, True, vbTextCompare)
※変更後のソースでは「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」の三つを区別しないくなりますのでご理解ください。
なお、大型アップデート版のツールをダウンロードいただければ大文字/小文字、全角/半角をボタン一つで変更可能になりますので宜しければダウンロードしてみてください。
管理人様
ありがとうございます。
早速試してみます。
管理人RH様
数日前よりこちらのツールを使わせて頂いています。ありがとうございます。
当方Windows11、Excel2007、大型アップデート版をダウンロードさせて頂いています。
こちらの検索システムを表リストとして使い、別シートにVLOOKUPで自動入力化したいと考えているのですが、うまく反映させることができません。
恐縮ではありますが、何か解決法はありませんか?
追記
使用する上で困っていないのですが、数点正常に機能していない箇所があります。
検索自体は概ね正常に機能していますが、数字のみでの検索ができません。たとえば「0.85」と検索ボタンを押すと「1900/1/0 20:24:00」に文字が変わり「検索対象が見つかりませんでした」と表示されます。数字と文字を合わせると正常に機能します。
また、「検索条件」「条件の対象」がダウンロードした時点で使用することができませんでした。
追記の内容に関してはそのままでも当方問題ありませんが、本件に関しては何卒よろしくお願いします。
長文失礼しました。
管理人RHです。
ZUNさん、ツールの使用とコメントありがとうございます。
申し訳ありません、あまりイメージがつかないのですが、別シートでVlookup関数を用いて検索システムの表をから値を取得するということでしょうか。
うまく反映させることができない原因として考えられるのは、「計算方法の設定」で「自動」ではなく「手動」になっていないでしょうか。マクロ内で再計算を自動にしていますが、もしかするとExcel2007が原因で正常に作動していない可能性も考えられます。
可能でしたらもう少し具体的な内容を伺うことは可能でしょうか?
また、追記に関してもありがとうございます。
検索ワードの表示形式を「日付」の状態でツールをアップロードしておりました。ここは日付を一度でも入力してしまうと表示形式が「標準」から「日付」に代わってしまうExcelの仕様からそのようなことが起こってしまいます。
「検索条件」「条件の対象」が作動しない件について、この二つの機能はExcelのスライサーという機能を使用しています。しかしExcel2007ではスライサーは使用できないという仕様から動作しなかったと考えられます。
この二つの機能はExcel2007では未対応となっており、申し訳ありません。
管理人RH様
早速対応して頂きありがとうございます。
仰る通りです。拙い説明を汲み取って頂きありがとうございます。
結果としまして、正常に作動させることが出来ました。
先人の使っていたシートを活用しようとしていたのですがうまくいかず、新たに1からシートを作り直してみたところ正常に作動しました。
追記の内容ですが、表示形式が日付に変わっており、標準に戻すことで解決しました。
「検索条件」「条件の対象」の件、承知しました。
迅速かつ丁寧な対応、本当にありがとうございました。
とても使いやすく便利です!
このようなツールを探していましたので大変ありがたく存じます。
お伺いしたい点がございまして、
■9列以下の情報のみ「編集や変更ができないよう保護」をかけたく思っており、
その状態で 通常通り
検索ワードを入力し
検索ボタンにて実行・フィルター解除
を行いたく思いますが、
シート全体を「セルの書式設定」→「保護タブ」でロックのチェックを外し
9列以降のみロックのチェックをつけた状態で
校閲→シートの保護を行うと、
検索ワードは入力でき、9列以下の情報に保護はかかりますが
検索ボタンとフィルター解除のボタンを押すと
「実行時エラー’1004’」が出てしまいます。
(VBAを実行できなくなってしまいます)
ご用意いただいている機能のまま
9列以下の情報に保護をかける方法はございますでしょうか。
大変恐れ入りますが
何卒ご教示をお願いいたします。
管理人RHです。
KANAさん、ツールの使用とコメントありがとうございます。
KANAさんがおっしゃっていただいたことは、以下の方法で実現できると思います。
①シート全体を「セルの書式設定」→「保護タブ」でロックのチェックを外し
9列以降のみロックのチェックをつけた状態にする。
②「校閲」→「シートの保護」で以下にチェックを付ける。
●「ロックされていないセル範囲の選択」
●「オブジェクトの編集」
③コピペするVBAソースコードを「Module1」でなく「ThisWorkbook」に保存する。
④VBAソースコードの最後の行(288行目以降)に以下を貼り付ける。
Private Sub Workbook_Open()
Worksheets(“テーブル内データ検索”).Protect Password:=””, UserInterfaceOnly:=True, DrawingObjects:=False, Contents:=True
End Sub
⑤マクロ形式(.xlsm)で保存して改めて開く。
開き直すと、9列目以降が編集できないようになっていると思います。
パスワードをつける場合は、④の「password:=」の””に囲まれている部分にパスワードを入力してください。
もしイメージされていることができない場合は、改めてコメントください。
管理人RH様
大変お世話になっております。
正直、お返事もいただけるか半信半疑だったのですが、
このように対応いただけましたこと、心から嬉しく思います。
とても分かり易くご説明をいただきまして、ご教示いただきましたように設定を行い、
選択コピーは必要でしたので「ロックされたセル範囲の選択」にもチェックをつけたことで
私がイメージしていたことを120%行うことができました!
いままで「検索と置換」やフィルターで不便な検索を行っていましたので
RH様のサイトにめぐりあえたことをとても有益に感じております。
心より感謝申し上げます。
管理人RHです。
KANAさん、コメントありがとうございます。
イメージしていたことが実現できたようで、こちらも大変嬉しく思います。
他のページにも色々と便利だと思うツールがありますので、是非ご活用ください。
管理人RH様
大変お世話になっております。
こちらのツールを有効に使わせていただいております、本当に助かっています!
恐れながら、欲をかいてもう一点ご教示いただけますでしょうか、
こんなことができたら、、というお話(ご相談)なのですが
例えば
「E列に氏名」、「J列に電話番号」が入っているとします。
まず
検索条件を「AND条件」
条件の対象を「複数項目」にて
①検索ワードへ電話番号入力し、検索
②J列(電話番号)で一つのみヒットし、一列のみ表示
ここまでが通常の流れとなりますが
~~~~~~~~~~~~~~~~~~~~~~~
②の結果から
『E列(氏名)』と同じもの(完全一致の同姓同名)を探し出し、
②の結果と併せて表示してくれる
~~~~~~~~~~~~~~~~~~~~~~~
(電話番号は違っても、同じお方の可能性があるため併せて表示)
こんなことは可能なのでしょうか。
検索ワードを入力し、検索ボタンを押すと
「常にE列のみ」の同姓同名(完全一致)も探し出し表示という流れです。
(ちなみに氏名で検索することもあります)
恐れ入りますが、何卒ご回答くださると幸いでございます。
よろしくお願いいたします。
申し訳ありません、恐縮ながら追記(訂正)でございます。
当方が使用しているデータの内、
「同一人物」である場合、【D列】の管理番号が共通でございました。
そのため、
①検索ワードへ(例えば→)電話番号入力し、検索
②J列(電話番号)で一つのみヒットし、一列のみ表示
ここまでが通常の流れとなりますが
~~~~~~~~~~~~~~~~~~~~~~~
②の結果から
『D列(管理番号)』が同じもの(完全一致のD列の管理番号)のデータを
②の結果と併せて表示してくれる
~~~~~~~~~~~~~~~~~~~~~~~
という方法を検討くださればと思いました、
(ちなみに管理番号で検索することもあります)
大変恐れ入りますが、何卒よろしくお願い申し上げます。
管理人RHです。
KANAさん、コメントありがとうございます。
検索条件が一致した際に、他の項目(D列の値)も一致していた場合は、その行も表示させる仕様ということだと思います。
汎用性がなく条件が限定ではありますが、とりいそぎ以下のコードを追加すると実現可能になりました。
動作しない場合は、改めてコメントをお願いします。
<条件>
●検索条件:AND条件 ●条件の対象:複数項目 ※検索ワードにスペースを使用して複数文字を入力しない。
<コードを追加>
●12行目に追加
Private Const OTHER_MATCH_COL = “D”
●145行目に追加
Dim iRow2 As Long
For iRow2 = HEAD_ROW + 1 To lastRow
If Range(OTHER_MATCH_COL & iRow2).Value = Range(OTHER_MATCH_COL & iRow).Value And _
iRow <> iRow2 Then
Range(OTHER_MATCH_COL & iRow2).Font.Color = RGB(0, 0, 255)
Range(WorkCol & iRow2).Value = “2”
End If
Next iRow2
●158行目を変更
Rows(iRow).Font.ColorIndex = 1
↓
If Range(WorkCol & iRow).Value <> “2” Then
Rows(iRow).Font.ColorIndex = 1
End If
この対応で、検索ワードにJ列の値(電話番号)が一致する場合に、一致した行のD列の値(管理番号)が他の行にも存在していた際は、一致したD列の値を青文字にして検索結果一覧に表示させることができると思います。
なお、汎用性がなく条件が限定となったのは、当ツールは項目を限定せずに検索でき、またスペースを区切ることで複数項目の検索に対応可能な仕様なので、他の全ての検索条件や条件の対象にも対応するようになると、使い方やインターフェースが複雑になりすぎてしまう恐れがありました。
そして思ったのですが、『テーブル内のデータを項目毎に検索して表示するマクロツール(Excel VBA)』(https://resthill.blog/excel-vba-tool9/)に対して今回のような対応をするほうが、使い方が複雑にならず親和性が高いのかなと感じました。
もし可能なら、テーブル内のデータを項目毎に検索して表示するマクロツールに汎用性が高い形で対応したものを組み込みたいと思うのですが、いかがでしょうか。
ご確認いただけますと幸いです。
管理人RH様
ご対応くださいまして、素晴らしいコードを用意いただき誠にありがとうございます。
ただ、「検索ワードにスペースを使用して複数文字を入力しない条件」ですと、
『せっかくご用意いただいていたそもそもの機能』が無くなってしまうのは勿体なく、
利便性を損なってしまいますので、
ご提案いただいていた『テーブル内のデータを項目毎に検索して表示するマクロツール(Excel VBA)』
についても早速試させていただきました。
「複数のワードをそれぞれの箇所へ入力」とはなりますが、こちらのツールもとても素敵です。
■例えば、こちらのツールを使用し「複数項目の入力で検索」を行った場合でも、
同時に「D列の中の管理番号が一致するものも一緒に表示」という方法は可能になりますでしょうか。
(ちなみにD列の管理番号で検索することもあります)
■こちらも、11列以降は編集不可にしたいです。
もう一点、
■こちらのツールの場合、飛び飛びで入力することが多いため、
ボタンで入力列を全て消去させられたらと思いました。
複雑なお話をしまして申し訳ございません、
よろしくお願いいたします。
管理人RHです。
KANAさん、コメントありがとうございます。
遅くなってしまい申し訳ありませんが、以下で検索した際に関連した項目が一致するデータも一緒に表示するツールを公開しましたので、ご確認ください。
https://resthill.blog/excel-vba-tool9_type2/
>■こちらも、11列以降は編集不可にしたいです。
これに関しては、紹介したツールで説明すると以下の対応で可能です。
①シート全体を「セルの書式設定」→「保護タブ」でロックのチェックを外し
9列以降のみロックのチェックをつけた状態にする。
②「校閲」→「シートの保護」で以下にチェックを付ける。
●「ロックされていないセル範囲の選択」
●「オブジェクトの編集」
③コピペするVBAソースコードを「Module1」でなく「ThisWorkbook」に保存する。
④VBAソースコードの最後の行(314行目以降)に以下を貼り付ける。
Private Sub Workbook_Open()
Worksheets(“項目別検索”).Protect Password:=””, UserInterfaceOnly:=True, DrawingObjects:=False, Contents:=True
End Sub
>■こちらのツールの場合、飛び飛びで入力することが多いため、
> ボタンで入力列を全て消去させられたらと思いました。
改良版のツールに組み込みましたので、ご確認ください。
上記を実施してもイメージの通り動作しない場合は、改めてコメントください。
大型版を購入しましたが、導入手順2以降が無いですがなぜでしょうか??
申し訳ございません。自己解決致しました。
管理人RHです。
shさん、ツールの使用とコメントありがとうございます。
大型版を使用してみて不明点、不具合等がありましたらご遠慮なく連絡ください。
初心者で申し訳ございません。
サンプルいただきましたが、総じて「;」と記載された行で区切り文字のコンパイルエラーが出ています。
対処法などご存じでしたらご教示お願い致します。
管理人RHです。
やまけんさん、ツールの使用とコメントありがとうございます。
申し訳ありません。アップロードしたVBAソースコードが特殊文字が置換されていたようです。再度アップロードしましたので、ソースコードを取り直してツールを使用してみてください。
動かない場合は、お手数おかけしますがもう一度コメントいただけますと幸いです。
早速ご対応頂きありがとうございます。
動きました。感動です。
このマクロは全く違うテーブル(表)にも対応可能でしょうか?
例えば社内で作成したテーブルで検索機能つけたい場合など。
その場合、基本的にプログラム上部の定数部分(座標など)を調整するだけでしょうか?
重ね重ね失礼いたします。
管理人RHです。
やまけんさん、コメントありがとうございます。
全く違うテーブルにも対応可能です。
その場合は「テーブル内データ検索」シートに表を映していただけると使用できます。
8行目を項目部にして、9行目以降をデータ部とする場合は、プログラム上部の定数部分(座標など)を変更することなく、問題なく使用できると思います。
項目部とデータ部の位置を変える場合は、おっしゃっていただいたように定数部分を変更すれば対応可能だと思います。
実際に行ってみて、思ったような動作をしない等がありましたらまたコメントいただければ対応いたします。
管理人様
度々すみません。
独自のテーブルに本マクロを適用しましたが、あと一歩うまくいっていないようです。
ご参考までに、独自のテーブルが以下の仕様です。
見出し行:B10~AG10 ※32列
11行目移行データ。5000行ほど。
設定値を以下に変更してます。
Private Const KEYWORD_POINT = “D4” ‘1.検索ワードを入力するセル位置
Private Const SEARCH_TYPE_POINT = “D3” ‘2.検索条件を指定するセル位置
Private Const TARGET_TYPE_POINT = “E3” ‘3.条件の対象を指定するセル位置
Private Const HEAD_ROW = 10 ‘4.テーブル見出し行の行番号
Private Const HEAD_COL_NUM = 2 ‘5.テーブル見出し列の列番号
Private Const SEARCH_TGT_POINT = “B3” ‘6.カンマ区切りで指定する検索対象の列を入力するセル位置
Private Const SETTING_SHEET_NM = “setting” ‘7.設定シートの名称
Private Const WORK_COL_NM = “作業列” ‘8.設定シートの名称
現象が以下です。
①任意の文字列で検索実行
②ヒットしている行があるはずなのに、全て折りたたまれてデータ0行。
③「作業列」と「列1」が最後列に挿入されている。
④「作業列」のみ非表示となっていて、「列1」でフィルターがかかっている。
※そのため0件ヒットになっていると思われる。
⑤因みに手動で「作業列」を「1」でフィルターかけると、期待している結果になる。
※対象文字列も赤く表示されている。
以上になります。記載している通り、最後にうまくフィルターがかかっていない挙動です。
必要でしたらExcelも送付可能です。
何卒宜しくお願い致します。
加えてですが、「検索」→「クリア」の度に作業列がどんどん増えていっている状況なのも何とかしたいと思っております。
よろしくお願いいたします。
管理人RHです。
やまけんさん、コメントありがとうございます。
正常に動作しないのは、AからでなくBから表が始まることが影響していると思います。
表の位置関係の予想がついていませんでした、申し訳ありません。
その状態ですと、以下の対応を頂ければ使用できると思います。
①178行目を以下に変更(元のコードは削除)する。
BaseSht.Range(HeadCellPoint & “:” & WorkCol & Format(HEAD_ROW)).AutoFilter Field:=WorkColNum – 1, Criteria1:=”<>“にする。
②265~274行目をコメントにする。
行ってみて動作しない場合は改めてコメントください。
なお、最新記事の「テーブルを指定してデータを検索するマクロツール」(https://resthill.blog/excel-vba-tool2_type3/)を使用すれば、検索しようとしている対象がテーブルの場合、エクセル内のどこにテーブルデータがあっても検索できるように作成してありますので、よろしければお使いください。
会社のpcでコードを使わしてもらおうと思ったのですが、会社のPCでは何故かコード部分が表示されません。購入も考えているんですが、何故コード部分だけ表示されないのでしょうか?
管理人RHです。
みちさん、コメントありがとうございます。
コード部分というのは、Excelファイル内の「開発」タブ→「Visual Basic」が表示されておらずVBAソースコードをコピペすることができないということでしょうか
もしかすると会社の情報セキュリティ上のルールでVBE(Visual Basic Editor)が開けなくなっている可能性があります。
もう少し詳細を教えて頂ければ幸いです。
因みにtool3で掲載されているコードはきちんと表示されます。
返信ありがとうございます。サイトはキチンと表示されるのですが、コードはこちらの部分でその下のコードだけが表示されない状態です。
管理人RHです。
みちさん、コメントありがとうございます。
サイト内のコード部分が表示されていないということですね、承知しました。コード部分は別サイト(githubというソースコード共有サイト)を利用して表示していますので、会社のセキュリティ上の都合でそれらの共有サイトが表示されないという仕組みになっているかもしれません。
それではコードの直下にソースコードが入ったテキストファイルをアップロードしましたので、閲覧できると思いますので、ご確認ください。
もしまだ見れない場合は、再度コメントください。
閲覧できました。ありがとうございます。ただ、検索項目を追加しようと再表示をしても何も出てこないのですが、、、どうやったらいいでしょうか?
追加 この度はご丁寧に対応して頂きありがとうございました。先の質問に加えてアップデート版購入致しました。アップデート版はコードの書き換えで大丈夫ですか?
管理人RHです。
みちさん、コメントありがとうございます。
ご購入いただき、誠にありがとうございます。
検索項目を追加しようとして、K列を再表示しても何も出てこないということで合ってますでしょうか?
その場合は、K列の再表示を無視して、K列目以降に項目を追加していってください。
項目を追加して表内にデータを入力した状態で、マクロが動作するよう検索アイコンとフィルター解除アイコンにマクロ登録をして、検索アイコンをクリックすると検索処理がされると思います。
<追加について>
アップデート版は以下のサイトにあるExcelファイルのダウンロードとコードのコピペの両方を行ってください。
https://resthill.blog/excel-vba-tool2_type2/
不明点等がありましたら、恐れ入りますが再度ご連絡ください。
パスワードを入力してもページに飛ばないです。
アップデート版とりあえず、きちんと使えるようになりました。非常に良かったです。ありがとうございます。又分からない事等あれば連絡させて頂きます。
管理人RHです。
みちさん、コメントありがとうございます。
無事使用できたようで良かったです。
また不明点等ありましたらコメントください。
管理人様
はじめまして。サンプル版をDLさせていただいた者です。
皆様問題なくご利用されているようなのですが、Settingシートで”検索する項目の列”の内容を変更しましても、”テーブル内データ検索”側に反映されません。
※濃紺の色付け箇所が変わりません。
検索対象は、Settingシートの内容になっていることを確認しています。
例えば、対象をC,D,Eへ変更した場合、濃紺はオリジナルの状態のままですが、検索ボタンをクリックすると、C,D,E以外は検索対象になっていません。
8行目のヘッダの色付けも変更されるとありがたいのですが、可能でしたら修正箇所をご教示いただけますと大変助かります。
(私はM365 Appsのエクセルを利用しております。)
管理人RHです。
CMさん、ツールの使用とコメントありがとうございます。
おっしゃっていただいた内容はsettingシート内の「検索する項目の列」(B3セル)を変えた場合に、検索対象は変えた列の値で検索できるが、検索対象の列の色が自動で変わらないので変えたいという内容だと思います。
可能ではあるのですが、コードを全体的に微修正する必要があります。
settingシートを変更した際に自動で色が変わるように仕様変更し記事を更新しますので、もう少々お待ちください。
管理人様
早々にご返信いただきありがとうございます。
はい、ご記載いただいております通りです。
改めてYouTube動画を確認させていただきましたところ、自動で色が変わる仕様になっていなかったことを認識しました。
てっきり変わるものと勘違いしており、M365 Appsが原因で上手く機能していない?のかと思っておりました。
大変失礼いたしました。
コードを全体的に微修正いただけるとのこと、本当にありがとうございます。お手数をおかけし申し訳ございません。
新たなスレッドを立ててしまいました。
投稿に慣れておらずお恥ずかしい限りです。
匿名投稿してしまいましたが、CMです。
管理人RHです。
CMさん、コメントありがとうございます。
コメントについては、なんら問題ありません。
11/24付けでアップロードした内容で自動で色が変わる仕様に変更しましたので、お手すきの際にご確認ください。
不明な動作等がありましたら、改めてコメントください。
管理人様
ご多用のところ早々にご対応いただきありがとうございます。
早速最新版を利用させていただき、Settingシートで指定した内容に基づき、ヘッダの色が変わることを確認させていただきました。
自分では到底できないことで、本当に助かりました。
ありがとうございます。活用させていただきます。
管理人RHです。
CMさん、コメントありがとうございます。
Excelのマクロを使えば、このような便利なことができるようになりますので、是非他の記事もご覧いただきExcelマクロとVBAを覚えていただければと思います。
はじめまして。
VBA初心者です。こちらを使わせていただきました。検索を押すと「予期せぬエラーが発生しました。エラー番号:13 エラー内容:型が一致しません。」となってしまいました。
何を間違えたのか分かりません。申し訳ございませんが教えてください。
管理人RHです。
ひろすけさん、コメントありがとうございます。
個人の環境に少し依存する部分があるので、状況によりエラーが発生してしまったのかもしれません。
では以下を試していただいて結果を教えていただけますでしょうか。
①「Sheet1(テーブル内データ検索)」の8行目の最初に’(シングルクォーテーション)を入れてください。(=コメントアウトする)
②検索アイコンをクリックして、表示されたダイアログで「デバッグ」ボタンを押す。
上記を行うと、VBE画面が表示されるので、その行数を確認して教えてください。
お返事ありがとうございます。
8行目は
‘ Dim keyword As Variant, keywordArr As Variant でよいでしょうか?
コンパイルエラーで
keyword = Trim(TextBox_SearchWord.Value)のところに色が付きました。
会社で社葬があり弔問に来てくださった方の名簿つくりをしたくてこちらを使わせていただきました。
もしかしたら、私がKの作業列となっているところを弔電、L列にフリガナ、M列に備考と増やしてしまったからでしょうか。
初心者で申し訳ございません。
説明をちゃんと読みながら最初からやってみます。
度々申し訳ございません。
説明を読みながらもう一度やってみました。前回のようなエラーはでず検索結果がちゃんととでました。
でも、作業列がどんどん増えてしまうのとK列を非表示にしても検索後は表示されてしまいます。どこを直したらよいか教えてください。よろしくお願いいたします。
もう一度初めから挑戦してみました。できました。
ありがとうございました。
もうひとつ教えて欲しいのですが、フィルター解除を押したときに検索ボックスにある文字も消えるようにしたいのですがどのようにしたらよいか教えてください。
よろしくお願いいたします。
管理人RHです。
ひろすけさん、ツールの動作確認とコメントありがとうございます。
※重複したコメントは削除しました。
特に問題なく実行できたということで安心しました。
現時点では、以下の3つは問題なくできているという認識で良いでしょうか。
(①K列からM列まで項目を増やすこと ②検索してもN列(作業列)が非表示のままであること ③作業列が増えていかないこと)
また、フィルター解除した際に検索ボックスにある文字を消えるようにする場合は、「Sheet1(テーブル内データ検索)」のVBAソースコードの189行目に以下を追加してください。
TextBox_SearchWord.Value = “”
実施してもイメージの動作ができない場合は、恐れ入りますが再度コメントください。
ありがとうございます。189行目に追加したら希望通りになりました。3つの動作も説明を読み直し最初からやりましましたら大丈夫でした。とても使いやすい一覧表になりました。
本当にありがとうございました。
度々申し訳ございません。
やはり、もう一つ教えてください。
検索対象の文字色を赤ではなく紫にしたくて調べて変更してみたのですがうまくいきませんでした。
設定値の検索対象の文字色のところが赤(255)になっているところを紫(128.0.128)にするのはどのようにしたらよいのでしょうか。
管理人RHです。
ひろすけさん、コメントありがとうございます。
検索対象の文字色を赤色でなく紫色に変更する場合は、Module1の14行目を以下に変更してください。
Public Const COLOR_TGT_FONT = 255
↓
Public Const COLOR_TGT_FONT = “&H800080”
なお、指定している値は色を変更する際のHex値の最初に「&H」を追加したものになります。
(調べ方)色変更時に「その他の色」→ユーザー設定の「Hex」の値(※最初の「#」をなくした6桁の英数字)がHex値になります。
できました。
そういうことなのですね。
128.0.128にするのかとばかり思っていました。
無知ですみません。とても勉強になります。
ありがとうございました。
管理人RHです。
ひろすけさん、コメントありがとうございます。
いえいえとんでもないです。
VBAコードは理解しやすいように簡潔に作成しているつもりですが、理解しにくく申し訳ないです。
勉強になるか分かりませんが、他記事もご覧いただければ幸いです。
一点補足です、Hex値に関しては2桁ずつをセットでVBAでは逆で指定することになりますのでご注意ください。
例)ExcelでHex値が「#123456」になっている場合は、VBAのコードでは「&H563412」を記載することになります。
コピペで理想通りのものができるなんてとてもありがたいです。
私が初心者なのでいろいろ質問してすみません。
ぜひ、他の記事も参考にさせていただきます。
こちら、まずは無料版にて試してみたいのですが、みちさんの問い合わせ同様、サイト自体は見れるものの、VBAコード部分が表示されません。
アップロードして頂いたというTEXTファイルも見当たらないのですが、削除されてしまいましたでしょうか?
ちなみに…他の記事では、VBAコード部分が見れるものと、やはり見れないものが混在しているような感じです。
ちなみに…他の記事では、VBAコード部分が見れる記事と、やはり見れない記事が混在しているような感じです。
同じ環境で閲覧していますので、セキュリティ関連により一括して見れないという状況ではないようです。
管理人RHです。
ゆんゆんさん、コメントありがとうございます。
VBAコード部分はGitHubというサイトを利用してVBAソースコードを貼り付けています。
記事によりGitHubを利用していないものもありますが、現在すべての記事にてGitHubでVBAソースコードを管理するよう移行中となっております。
ご迷惑をおかけしており、大変申し訳ありません。
しかし、当記事の構成を変更し、マクロ入りのExcelファイルをダウンロードできるようにしましたので本ツールをダウンロードすれば事前準備不要でツールを使用できます。
またExcelファイル内のVBEよりVBAソースコードはご確認できるようになりましたので、そちらでご確認いただけますと幸いです。
ツールが動作しないVBAソースコードが見れない等がありましたら、恐れ入りますが再度コメントください。
RH様
ご返信ありがとうございます。
マクロ入りファイルをご用意頂き、無事にDLできました。
また、VBAにて「Module1」「Sheet1」「Sheet2」に各コードが記載されていることも確認できました。
まだ実際に動かしていないのですが、
もし不明点等がありましたら、再度問い合わせさせて頂きます。
この度はご対応感謝致します。
管理人RHです。
ゆんゆんさん、コメントありがとうございます。
無事ダウンロードできたとのことで、良かったです。
また動作させてみて、不明点等がありましたらコメント等いただければ幸いです。