【Excel】VBAで特定項目の抽出方法をコードで解説

こんにちは!今日は、Excelで特定の条件に合致するデータを自動的に抽出する方法を紹介します。

データリストから「ある製品の価格を出したい」や「ある品種の基準値を出したい」といった悩み、ありませんか?このVBAコードを使えば、データリストにある情報を自動で読み取り指定した品種やカテゴリに該当する項目を出力する事ができます。これを使って作業を自動化し、手動操作によるミスも防げます。

本記事はVBAコードを丸ごとコピーして利用したい方や、ある程度読める方、他者のコードを参考にしたい方などに向けて記載しておりますので、一つ一つの細かな説明は割愛しております。

 

使用するデータ表

まず使用するデータ表について解説します。
データ表の構成
具体的には、「№」「分類」「品名」「メーカー」「価格」という構成になっており、14行分のデータを作成しました。このデータ表にはすべての列が同じになる重複行は存在しません。

検索条件

次に検索条件の説明を行います。
今回の検索条件には「分類」「品名」「メーカー」を指定しており、下図のように「検索条件」というワークシート上の入力した値が条件として使用されます。ちなみに条件セルは入力規則にてリスト化して選択肢を出すようにしました。

ヒント

今回のサンプルでは入力規則にて選択リスト化していますが、項目数が多い場合には分類の選択により、品名やメーカー名の選択肢を変化させるマクロを作成する事で操作性を向上させることが可能です。この部分については今回説明を省略します。

結果の表示

抽出した価格は下図の赤枠のように「価格」を表示します。

コード解説★★★(コピーはここ)★★★

解説

今回のコードは大きく分けて「変数の宣言」「検索条件の取得」「検索/価格取得」「検索結果の格納」の4つに分かれています。ではそれぞれ順番に説明していきます。

「変数の宣言」

この2行でコードで使用する変数を宣言しています。
1行目:入力した検索条件を格納するための変数
2行目:検索行と価格を格納するための変数

「検索条件の取得」

ここでは宣言した変数へ検索条件を格納しています。

「検索/価格取得」

データ表から検索条件に合致する項目を繰返し処理にて検索しています。
1行目の「DO While」と最終行の「LOOP」が繰返しを意味し、「検索対象が空白になるまで」繰り返しています。
2行目の「IF・・・」から6行目の「End If」の部分では検索条件に合致するセルの価格を「Price」という変数へ格納しています。
7行目の処理にて次確認する行を1つ進めます。

ヒント

今回は省略していますが、重複行が存在しないことからPriceへ格納処理を行えば以降の行は処理不要ですので、終了処理を組み込むことで動作速度を改善する事が出来ます。

「検索結果の格納」

Priceへ格納した価格データを「検索条件」のワークシートのセルB8へ入力します。

使用している技術

基本:DO-LOOP、IF-THEN-ELSE

最後に

今回の使用例は検索して見つかれば格納するという単純なものです。組織での運用を考える際には「見つからなかった時の処理」も追加検討が必要となりますが、一時的な個人利用の範囲ではこれで十分かと思います。少しでも皆様のお悩み解決に繋がればうれしいです。

コメント

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