情報を見つけるための鍵、それが『検索』です☆

2024年7月26日

みなさん、こんにちは!今回はパソコンで情報を見つけるための「検索」についてお話しします!デジタル時代において、新しい情報を見つけるスキルはとても重要ですよね。そこで、Excelで情報を絞り込んだり抽出したりする基本的なテクニックを紹介します。

パソコンは検索する道具

まず、パソコンは現代社会において重要な役割を果たすツールです。特に、情報を探し出すこと、つまり「検索」は非常に重要です。インターネットを使って新しい情報を調べたり、データを整理したりするのは日常的なことですよね!

検索エンジンを使うと、必要な情報を迅速に入手でき、問題解決や判断の裏付けにもなります。ファイルやフォルダを適切に名前付けたり、タグをつけたりすると、保存したデータもすぐに見つけられます。

「検索」「絞り込み」「抽出」

Excelでも「検索」「絞り込み」「抽出」を活用できます。まずは基本から説明しますね!

Excelの検索機能

Excelでは、セル内の特定のデータを検索することができます。これを使うと、必要な情報を素早く見つけることができます。ただし、単に検索するだけでは、データの全体像をつかむことは難しいです。

絞り込み

検索したデータが複数ある場合、条件を指定してデータを絞り込むことができます。例えば、「取引先がA社で、取引日が10月」というような複数の条件を設定すると、その条件に合致するデータだけが表示されます。非表示になったデータは消えるわけではなく、再表示すれば元に戻ります。

抽出

絞り込んだデータを別の場所にコピーしておきたい場合、それを「抽出」と呼びます。元の表を変更せずに、必要なデータだけを別の場所に表示することができます。

Excelの絞り込みと検索

Excelには「絞り込み」や「抽出」を行うための機能がいくつかあります。代表的なものを紹介しますね。

オートフィルター機能

オートフィルターは、特定の条件に合致しない行を非表示にする機能です。元のデータは変更されず、条件に合致するデータだけが表示されます。

詳細フィルター機能

詳細フィルターは、特定の条件に基づいてデータを絞り込むだけでなく、別の場所に新しい一覧表として作成することもできます。操作は少し手間がかかりますが、柔軟な絞り込みと抽出が可能です。

FILTER関数

FILTER関数は、一度設定すれば自動的にデータを抽出してくれる計算式です。設定しておけば、いつでも最新の抽出結果が表示されます。ただし、新しい関数なのでExcel2019以前のバージョンでは使えません。

Excelでの自動化に向いているのはどの方法?

自動化と相性が良いのは「FILTER」関数です。一度設定すれば、自動的にデータが抽出され、元の表も崩れません。しかし、Excel2019以前のバージョンでは使えないので、その場合は他の方法を考える必要があります。

詳細フィルター機能とマクロ

FILTER関数の代わりに詳細フィルター機能を使う場合、自動化するためにマクロを利用できます。マクロを使うことで、詳細フィルターの操作を自動化し、効率的にデータを抽出できます。

詳細フィルター機能をVBAで自動化

VBAを使うと、セルの値が変わった時に自動的に詳細フィルターを実行することができます。これにより、手動でフィルターを設定する手間が省け、効率的にデータを抽出できます。

ではここで、うちのさとうせんせいから、詳細フィルターとVBAを使った方法を紹介してもらいます!

検索システムの作り方

ここからバトンタッチして、さとうです。

次のような一覧表があります。テーブルになっていて「販売」という名前がついています。ここで大事なのはこのような一覧表の1行目には項目名が設定されていること、この項目名がとても大事です。

販売先がC社で仕入先がK販売のデータは、6行目、8行目15行目です。そのデータのみをG列に抽出したいと思います。

「詳細フィルター」機能には、元のデータの範囲はもちろん必要ですが、その他にどのデータを抽出するかを示す「検索条件範囲」、どの項目を抽出するかの「抽出範囲」をセルに作成する必要があります。

今回の場合は、「販売先」が「C社」、「仕入先」が「K販売」の2項目の検索条件が必要になります。抽出する項目は全項目とします。

まず検索条件が2項目なので、G1からH2のセル範囲に次のように入力します。項目名は元データにあるものをそのまま使ってください。

次に抽出項目が全項目なのでG3からのセル範囲に次のように入力します。元データの1行目をコピーしても構いません。抽出範囲も項目名は元データにあるものをそのまま使うのがポイントです。

これで前準備は終わりです。

ここで、データタブの「詳細設定」をクリックします。

そうすると次の「フィルターオプションの設定」が表示されます。すかさず「指定した範囲」をクリックします。これにより「絞り込み」ではなく「抽出」になるのです。

「リスト範囲」には元データ範囲、「検索条件範囲」、「抽出範囲」を指定します。すべて項目名を含めます。項目名を含めることにより、Excelがどの項目をどう見てどう抽出するのか判断できるのです。

OKボタンをクリックすると抽出されます。

この動作をマクロの記録で記録し、検索条件範囲の横にそのマクロを動かす図形を置いておけば、条件を変更してそのボタンをクリックするだけで抽出される仕組みにすることができます。

「詳細フィルター」機能をVBAで自動化

次に「詳細フィルター」機能を「FILTER」関数のように、特に抽出するという動作をせずとも、一連の動作の中で動作させるようにしたいと思います。どのタイミングで抽出の動作をすればいいでしょうか。

1つは、検索する条件を変えたときだと思います。検索の条件が変わるとき、つまり、セルの書き換えが行われた時、という動作です。

このタイミングはVBAを使えば、Excelがシート内のセルの内容が変わった時を検知し、その時に動作させることができます。これはシート見出しを右クリックして「コードの表示」をクリックすると設定することができます。

この画面は、VBAを操作するVBEの画面です。

この「(General)」と書いてあるところをクリックすると「Worksheet」をクリックすると、その右側が「SelectionChange」になります。下には「Private Sub Worksheet_SelectionChange(ByVal Target As Range)」が表示され、これは、このシートの選択しているセルが変わったら、というときに動き出すものを指しています。

今度はその「SelectionChange」をクリックし、「Change」を選択します。すると「Private Sub Worksheet_Change(ByVal Target As Range)」となり、これがセルの値が変わったら、になります。その下の「End Sub」までの間に抽出の動作を書き入れます。

「Private Sub Worksheet_SelectionChange(ByVal Target As Range)」から「End Sub」は不要なので消しましょう。

抽出の動作を日本語で整理すると、「もしも、変化したセルがセルG2またはセルH2だった場合は、元データを販売テーブルの範囲で検索条件範囲がG1からH2のセル範囲で抽出範囲がG4からK4のセル範囲で抽出する」という動作になります。

「もしも」で動作する内容は「If」文で「If」から「End If」の範囲に書きます。

変化したセルは「Target」で読み出すことができますが、そのセルが「G2」のような形で読み出すには「Target.Address」で読み出します。この場合は「$G$2」のような絶対参照で読み出されます。

抽出をするVBAは「元データのセル範囲.AdvancedFilter xlFilterCopy,検索条件範囲,抽出範囲」として、表現します。

範囲は「Range」で表し、「Range(“G1:H2”)」でG1からH2のセル範囲を表します。テーブル範囲も同じように表現出来て「Range(“販売”)」で販売テーブルのデータのみの範囲となり、項目名を含めたすべては「Range(“販売[#All]”)」で表現できます。

ここまでの情報をまとめると次のようなVBAになります。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$2" Or Target.Address = "$H$2" Then
    Range("販売[#All]").AdvancedFilter xlFilterCopy, Range("G1:H2"), Range("G4:K4")
  End If
End Sub

このVBAのそれぞれの行は、次のような意味になります。

  1. シート内のセルの値が変化した時
  2. もしも変化したセルがG2または変化したセルがH2だったら次の動作をします。
  3. 販売テーブルの項目名が入った範囲を元データとして、G1からH2までのセル範囲を検索条件範囲、G4からK4のセル範囲を抽出範囲として抽出を行います。
  4. もしも変化したセルがG2または変化したセルがH2だったらの動作ここまで
  5. シート内のセルの値が変化した時の動作ここまで

これをVBEに記載したら、×ボタンでVBEを閉じれば完成です。

これで、見かけ上ですが、FILTER関数と同じような動作をさせることに成功しました。

ここまで、さとうでした。

まとめ

さとうせんせい、ありがとうございました。

この機能、こんな簡単に検索するシステムを作ることができるんですね!すごい!!

情報社会において、パソコンは重要な検索ツールです。FILTER関数や詳細フィルター機能を活用することで、必要なデータを効率的に抽出できます。特にVBAを組み合わせることで、より高度な自動化が可能になります。

今回はExcelの絞り込みと抽出について詳しく紹介しましたが、他にもたくさんの機能がありますので、ぜひ活用してみてくださいね!