現役システムエンジニアが業務改善関連の「実施した講座の内容」や「実務で遭遇した課題と対処方法」などを掲載するブログです。2020年1月29日VLOOKUP関数は検索条件に該当する一つの行からデータを取得する関数です。最初に該当するものを取得するため検索条件に該当するものが複数ある場合には不適切です。単純に探したい場合はフィルター機能を使用するのが一番適切です。検索をシートに組み込んで固定させたい場合は関数が良いです。そこでVLOOKUP関数の応用で複数の結果に対応する方法を紹介します。HLOOKUP関数やXLOOKUP関数でも同様の手順で実現可能です。区分1を検索キーとします。検索対象の列に連番を振る区分1にの隣に連番のセルを用意します。COUNTIF関数を利用して同一区分1がカウントアップされていくようにします。C列が連番セル、B列がC列の数式を表示したものです。C1に下記の数式を設定し表の一番下までコピーします。=COUNTIF($D$3:D3,D3)検索範囲の始点のみが絶対参照となっていて下に行くほどカウントの範囲が広がるようになっています。このNoが最大で幾つまであるのか把握しておく必要があるためMAX関数で最大値を取得します。区分1を一つ入力したら全ての該当データが表示されるようにします。下記のような検索用シートを作ります。左端のNoは固定の数値です。1からNoの最大値まで用意する必要があります。文字結合で検索用シートの検索キーを作ります。区分1の方は絶対参照で式がズレないようにします。この数式は列を作らず、VLOOKUP関数に直接、記述しても構いません。検索対象表と検索用シートの両方の検索キーでVLOOKUP関数を設定します。Noを最大値まで用意しておかないと全ての検索結果が表示されない点に注意が必要です。存在する数が最大値に満たないと#N/Aエラーとなるため必要であればIFERROR関数などで対処しておきましょう。列ごとに区分1を指定する例を記述します。検索用シートは下記のようにします。区分1の列を追加しています。検索対象表と同様にNoをCOUNTIF関数で振るように数式を作り、それと区分1を結合します。検索値が1つの場合と同様のVLOOKUP関数を作れば完成です。検索用シート側に最大値までNoがないと検索結果が漏れてしまう点と存在しないNoが出た場合はエラーとなってしまう点は検索値が一つの場合と同様です。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト上に表示された文字を入力してください。