LOOKUP関数では対応できない複雑検索を解決する方法

LOOKUP関数では対応できない複雑検索を解決する方法 IT

第1章:LOOKUP関数の限界とは?

Excelをある程度使えるようになると、LOOKUP関数VLOOKUP関数に自然と頼るようになりますよね。たとえば「社員番号から名前を引っ張ってくる」「商品コードから価格を表示する」といった単純な検索にはピッタリです。しかし、実際の業務で使っていくうちに「なんでコレじゃできないんだ?」という壁にぶつかることも少なくありません。

本章では、LOOKUP関数の基本的な使い方を振り返りつつ、「なぜこの関数だけでは限界があるのか?」をわかりやすく解説します。

LOOKUP関数の基本をおさらい

LOOKUP関数は、簡単に言えば「ある値に対応する別の値を探し出す」ための関数です。以下のように使います:

=LOOKUP(検索値, 検索範囲, 結果範囲)

たとえば、社員番号101に対応する社員名を取得したい場合、社員番号リストと名前リストを準備してLOOKUPで引っ張ってくる、という使い方をします。シンプルな仕組みで、使いやすいのが魅力です。

でも、実務では通用しない?LOOKUPの弱点

一見万能に見えるLOOKUP関数ですが、実は致命的な弱点がいくつもあります。以下は、その代表的な例です。

  • 正しい順番が前提:検索範囲が昇順に並んでいないと、正しく結果が返って来ない
  • 完全一致ができない:LOOKUPは近似値検索が基本で、完全一致には向かない
  • 複数条件に弱い:例えば「部署が営業部で、かつ勤続年数が3年以上の社員」などの検索ができない
  • 片方向にしか動けない:VLOOKUPに代表されるように、左から右の検索しかできず、右から左を検索できない

これらの条件にちょっとでも当てはまる場面、特に複雑なフィルターや複数条件の絞り込みが必要な場合、「LOOKUPじゃ無理かも」と感じる瞬間が必ず出てきます。

LOOKUPでつまずいた経験、ありませんか?

あなたもこんな経験がありませんか?

商品コードと商品の種類で価格を特定したいのに、VLOOKUPでは片方の条件しか使えない…。
勤務地が東京、部署が営業の社員を抽出したいが、LOOKUPではできない…。

仕事で使うデータは単純な表だけとは限りません。複合的な条件が絡んだり、データの並びや構造が複雑なケースも多く、そんな時に「LOOKUP関数の限界」を痛感する人が続出しています。

本記事の目的

このブログ記事では、LOOKUPでは対応できない場面で、どんな関数を使えば良いのか、そしてどうやればそれを使いこなせるかを具体的に紹介していきます。最終的には、「LOOKUPじゃ無理だ…」と感じたときに、次の一手が自然と打てるようになることを目指しています。

続く第2章では、実際にどんな「複雑検索」がビジネスの現場で必要とされるのか、具体的な失敗例を通じて理解を深めていきましょう。

第2章:複雑検索とは?代表的な検索の失敗例

LOOKUP関数の限界を実感する瞬間、それは「思った通りにデータを抽出できない」ときです。特に実務では、「部署が〇〇で、かつ役職が部長」や「名前に“田中”を含む社員だけを抽出」など、単純な1対1の検索では済まない場面が頻出します。これがまさに「複雑検索」と呼ばれるケースです。

複数条件による検索ができない

例えば、社員リストから「勤務地が東京で、部署が営業部の社員だけを抽出したい」とします。VLOOKUPやLOOKUPでは1つの条件(例えば「社員番号」や「名前」など)しか指定できないため、このようなAND条件の検索には対応できません。

実務では、部署+役職+スキルなど、2つ以上の条件を考慮した検索が求められることも珍しくありません。こうした場合、LOOKUP関数の構造では限界があり、「誰を検索するか」というロジックの組み立てから見直す必要があります。

前後関係のあるデータを抽出できない

次に、「あるデータの前後にある値を取得したい」というケース。たとえば、売上履歴から直近の注文日や、前回の購入者を知りたいといった要望があったとします。

LOOKUP関数は1つの検索結果しか取れず、その前後のデータにはアクセスできません。これでは、たとえば「◯◯さんが最後に購入したのはいつか?」といったデータ分析系の問いに答えることができません。

部分一致検索が難しい

営業日報や問い合わせログなどには、「カスタマーA」「カスタマーB」などの文字列が含まれているケースがあります。このとき、検索対象の文字列に一部含まれているかどうか(例:”カスタマー”というキーワードを含む)のような検索をしたいと思っても、LOOKUP関数では完全一致、もしくは近似値の検索しかできず部分一致には対応できません。

一方で、現場では「特定ワードが入ったコメントだけ抜き出したい」「あるキーワードを含む行だけ一覧化したい」といったニーズが非常に多いため、部分一致を扱えないLOOKUPに限界を感じる人が多いのも納得です。

検索先が動的で柔軟性がない

意外と見落とされがちですが、LOOKUP関数では「どこを見るか」の範囲が固定されているため、たとえば部署ごとにリストの列位置が変わるような動的な表には対応できません。

以下のような例を考えてみてください:

各支社でレイアウトが異なる売上シートから、支社名と支店長名を入力すると売上数字を取得したい。

このようなケースでは「見る列自体が変わる」ため、指定範囲が固定のLOOKUP系関数では非対応となり、柔軟な構造にはなりません。

実務でよくある“詰まりポイント”

以下に、LOOKUP関数でよくある失敗パターンをまとめます。どれか一つでも心当たりがあれば、それは複雑検索が必要なサインです。

  • 2つ以上の項目で絞り込みたいができない
  • 条件に合った上位n件だけを表示したい
  • 検索対象が可変なので、柔軟に対応したい
  • 名前の一部だけ一致したデータを抽出したい
  • 検索した結果を並べて一覧で表示したい

このように、実務の中で求められる検索は、LOOKUPの考え方だけでは限界があります。特に、検索条件が複雑だったり、検索結果自体がリストで出力される必要がある場合などは、それに対応した他の関数や工夫が必須です。

次章では、そんな複雑検索に対して「どうすれば解決できるのか?」をテーマに、LOOKUPの代替となる関数をわかりやすく紹介していきます。

第3章:使える!代替関数とその使いどころ

前章では、LOOKUP関数では対応しきれない「複雑検索」の具体例を紹介しました。では、それにどう対処すればよいのでしょうか?この章では、LOOKUP系関数の壁を超えるために有効な3つの代替関数INDEX×MATCHFILTER、そしてXLOOKUP—を取り上げ、それぞれの特徴や得意なシチュエーションをわかりやすく解説します。

1. INDEX×MATCH:検索の自由度No.1

まずは、Excelユーザーなら一度は聞いたことがある「黄金コンビ」、INDEX関数とMATCH関数の組み合わせです。これは、指定した条件に一致するデータを柔軟に抽出するための基本形であり、LOOKUPの代替として最も汎用性があります。

=INDEX(結果の範囲, MATCH(検索値, 検索範囲, 0))

この組み合わせのメリットは以下の通りです:

  • 検索方向が自由:左→右、右→左、どちらでもOK
  • 完全一致・近似値を選べる:MATCH関数の引数でコントロール可能
  • 複数条件にも対応可能:配列数式やヘルパーカラムを併用すれば複雑な条件検索も可能

ただし、構文がやや複雑になるため、「数式が苦手…」という人には最初ハードルが高く感じられるかもしれません。ただ、それを乗り越えればLOOKUPの代替として最も強力な武器になります。

2. FILTER関数:複数条件に強く、結果が一覧で返る!

比較的新しい関数であるFILTER関数は、複数条件に対応しつつ、該当結果をリスト形式で返してくれる非常に強力なツールです。

=FILTER(戻したい範囲, 条件1 * 条件2)

例えば、「勤務地が東京」かつ「役職がマネージャー」の社員全員を返すには以下のように書きます:

=FILTER(A2:D100, (B2:B100="東京")*(C2:C100="マネージャー"))

このように、複数条件を*(AND)+(OR)で組み合わせることで、LOOKUPでは実現できなかった柔軟な条件検索が可能になります。しかも、該当するデータを全件自動で一覧表示

FILTER関数の強み:

  • 複数条件にネイティブ対応
  • 結果が動的に更新される(スピル機能)
  • FILTER関数1本で完結し、式も比較的シンプル

ただし、Excel 365(一部のExcel 2019)以上でしか使えない点に注意が必要です。それ以前のバージョンではこの関数は使えません。

3. XLOOKUP:LOOKUP系列の“最終進化”

最後に紹介するのは、LOOKUPやVLOOKUP、HLOOKUPの上位互換とも言える関数、XLOOKUPです。これはMicrosoftが満を持してリリースした「次世代LOOKUP関数」とも呼べる存在で、以下のような特長があります。

=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからない場合], [一致モード], [検索モード])

主なメリットは以下の通り:

  • 左右どちらからでも検索可能
  • 完全一致/近似値/ワイルドカード検索にも対応
  • エラー処理が組み込める(第4引数で「見つからない場合の値」を指定可)
  • 1つの関数で完結するシンプルさ

LOOKUPからスムーズに移行できる点でも、初心者にとって取り組みやすいです。「関数の数を増やしたくない」「でも柔軟に検索したい」という方には特にオススメです。

どれを使えばいい?適材適所の選び方

それぞれの関数には「得意領域」があります。以下の早見表を参考に、自分の使いたい用途に合わせて選びましょう。

関数名 得意な用途 初心者おすすめ度
INDEX×MATCH 自由度の高い検索、右→左などの特殊ケース ★★★☆☆
FILTER 複数条件、一覧出力、スピル対応 ★★★★☆
XLOOKUP LOOKUP系の進化版。片方向検索の完全一致や例外処理に強い ★★★★★

次章では、これらの代替関数を実際の業務データに活用する方法として、「複数条件での一発検索」など、今すぐ使えるテクニックを具体的に紹介していきます。

第4章:実践!複数条件・動的検索のテクニック

ここからは、前章で紹介したINDEX×MATCHFILTERXLOOKUPなどを用いて、実務ですぐに使える検索テクニックを紹介します。Excel上でよく求められる「複数条件での検索」や「動的なデータ取得」の実例を挙げながら、具体的な数式の書き方とその考え方を丁寧に解説します。

ケース1:部署×役職で該当者の氏名を取得(INDEX×MATCH)

以下のような社員リストがあるとします。

氏名 部署 役職
田中一郎 営業部 課長
鈴木次郎 開発部 部長
佐藤三郎 営業部 部長

ここで「営業部×部長の氏名を表示したい」場合、INDEX×MATCHの組み合わせで対応できます。

=INDEX(A2:A100, MATCH(1, (B2:B100="営業部")*(C2:C100="部長"), 0))

この式は配列数式(Ctrl + Shift + Enter)として入力します(※Excel 365なら通常のEnterでOK)。

ポイントは (条件1)*(条件2) によってAND条件を実現している点です。

ケース2:条件に合った複数のデータを一覧で表示(FILTER)

上と同じ社員表を使って、「開発部所属の社員全員を一覧表示したい」といったケースでは FILTER関数が最適です。

=FILTER(A2:A100, B2:B100="開発部")

さらに「開発部かつ課長」の社員を表示するには:

=FILTER(A2:A100, (B2:B100="開発部") * (C2:C100="課長"))

条件が増えても、*(AND)や+(OR)で柔軟に対応できるので、複数一致×複数出力にとても強いです。
スピル機能により、該当者が増減すれば自動で一覧も変わるので、最新のデータ管理にぴったりです。

ケース3:動的な列指定&エラーハンドリング(XLOOKUP)

たとえば「社員番号を入力して、所属部署を取得する」場合、XLOOKUPはこう使えます:

=XLOOKUP(F2, A2:A100, B2:B100, "該当なし")

ここでのF2は検索したい「社員番号」。XLOOKUPはエラー時の表示("該当なし")も埋め込めるため、ビジネス用途でも安心して使えます。

さらに、検索する列や戻す列を別の入力セルから動的に指定するようなケースもカバーできます。たとえば、「社員番号→役職」や「社員番号→部署」を切り替えて表示したい場合、CHOOSE関数と組み合わせることも可能です。

=XLOOKUP(F2, A2:A100, CHOOSE(G2, B2:B100, C2:C100), "該当なし")

この例では、G2に「1」を入力すれば部署を、「2」にすれば役職を表示するようにできます。検索も参照列も柔軟になるのがXLOOKUPの魅力です。

ケース4:上位n件のデータ抽出(SORT×FILTER)

例えば「売上が高い順に上位3人の氏名を表示したい」といった分析系の場面には、SORTFILTERの組み合わせが有効です。

=INDEX(SORT(A2:B100, 2, -1), SEQUENCE(3), 1)

この式では、売上(B列)を降順(-1)でソートし、上から3件の氏名(A列)を取り出しています。SEQUENCEで上から3行を指定しているため、内容が変化しても上位3件を動的に取得できます。

実務にどう活かすか?

あなたの業務表に「複数条件の絞り込み」や「特定条件に合った一覧抽出」「入力に応じた表示切り替え」などのニーズがあるなら――今回紹介した関数のどれかで解決できる可能性が高いです。

特にFILTER関数とXLOOKUPは、関数ひとつで多くのロジックを完結できるため、忙しいビジネスパーソンには頼れる味方。INDEX×MATCHも柔軟性が高く、表の構造に応じた高度な対応が可能です。

次章では、これらのスキルをもっと気軽に、着実に身につけていくための学習法や、無料で学べるおすすめリソースを紹介します。

第5章:「分からない」をなくす学び方とおすすめリソース

ここまで、LOOKUPの限界から始まり、代替関数の紹介、そして実践的なテクニックまでを一通り見てきました。「すごい、便利そう!」と感じたものの、中には「覚えるのが大変そう」や「関数がとっつきにくい」と感じた方もいるかもしれません。でも大丈夫、Excel関数は“慣れ”がすべてです。

この章では、関数に苦手意識がある人でも効率よく習得できる「学び方のコツ」と、気軽に学べる「おすすめの無料・有料リソース」を紹介します。

ステップ1:まずは「真似る」から始めよう

最初から関数をゼロから自分で書こうとせず、実際の使用例を見て真似るのが最も効率的な学習方法です。本ブログで紹介したような実例をコピーして、自分のExcelに貼り付けてみてください。そして少しずつ、「ここを変えるとどうなるんだろう?」と実験していく中で自然と理解が深まります。

特にFILTER関数やXLOOKUPなど、書き方はシンプルでも効果が大きい関数から始めるのがおすすめです。

ステップ2:エラーは学びのチャンス!

関数初心者がつまずきやすいのがエラー表示。たとえば#N/A#VALUE!などが出ると焦ってしまいますが、これらにはちゃんと理由があり、読み解くことで次に活かせます

  • #N/A:指定した値が見つからなかった →XLOOKUPで第4引数を使って優しくカバー
  • #VALUE!:数式の型が正しくない →引数の順番や範囲の一致をチェック
  • #SPILL!(スピルエラー):表示先のセルがふさがっている →出力先に空白セルを確保しよう

最初はエラーにびっくりするかもしれませんが、「なぜこのエラーが出るのか?」に注目すれば、それが一番の学習材料になります。

ステップ3:関数を「なぜ使うのか?」から考える

よくある失敗が「関数を覚えること」が目的になってしまうこと。でも重要なのは、業務上の課題をどう解決するか?です。

たとえば、「社員の情報を部署や役職ごとに一覧で抽出したい」→ それを実現するためにFILTERやXLOOKUPを使う。…というように、自分の目的を先に考えてから関数を選ぶと、理解が早まり、忘れにくくなります。

おすすめの無料・有料学習リソース

以下は、初心者~中級者向けにおすすめできるExcel関数の学習リソースです。

  • Office公式 サポートページ
    https://support.microsoft.com/ja-jp/excel
    各関数の使い方が正確に確認できる“辞書”的な存在。詳細な構文や例も掲載。
  • できるネット(インプレス)
    https://dekiru.net
    初心者にもわかりやすく、図解やスモールステップ形式の解説が特徴。
  • Excel関数ガイド(Qiita)
    IT系の情報メディア。実務に即したサンプルが多く、“痒いところに手が届く”記事が多いです。
  • Udemy:Excel関数講座
    有料ですが、動画で学べるため「見て覚える」スタイルの方には特におすすめ。しっかり体系的に学びたい方に。

学びは「今日の業務」で差が出る

関数は覚えて終わりではなく、業務の効率が変わる実用スキルです。ちょっと使えるようになるだけでも、「あ、これ自動化できそう」「ミスが減りそう」といった気付きが増えて、評価や信頼にもつながります。

今日からひとつ、実務ファイルにFILTERやXLOOKUPを試してみるだけでも大きな前進です。

まとめ

LOOKUP関数では対応しきれない業務上の複雑な検索も、代替関数や少しの工夫でスマートに解決できます。そして、関数に自信がない方でも、わかりやすい例と信頼できるリソースを頼れば、着実にスキルアップが可能です。

「できることが増える」―それがExcelの最大の魅力。まずは一歩踏み出して、あなたの業務に活かしていきましょう。

コメント

NewsTowerをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む