XLOOKUP関数が重い・遅い原因と対処法まとめ|高速化のやり方も解説!

XLOOKUP関数が重い・遅い原因と対処法まとめ|高速化のやり方も解説!

最近、Excelファイルの動作が遅くなったと感じたことはありませんか?
特に XLOOKUP関数 を使っているシートで「反応が重い」「スクロールや保存に時間がかかる」といった症状に悩まされている方も多いのではないでしょうか。

XLOOKUP関数は非常に便利で柔軟な関数ですが、使い方によっては処理が重くなりやすいという一面もあります。特に「複数条件での検索」や「大きなデータ範囲を扱う場合」は注意が必要です。

本記事では、XLOOKUP関数が重くなる原因を整理したうえで、Excelファイルを軽く保つための高速化テクニックをわかりやすくご紹介します。関数の見直しや、ちょっとした設定の変更でパフォーマンスが大きく改善されることもありますので、ぜひ参考にしてみてください。

XLOOKUP関数が重くなる原因とは?

XLOOKUP関数は柔軟で便利な関数ですが、状況によっては処理が重くなってしまうことがあります。ここでは、よくある原因を具体的に紹介します。


検索対象の範囲が広すぎる

XLOOKUP関数の検索範囲がA列~Z列など、必要以上に広く設定されていると、それだけ処理に時間がかかります。特に、空白セルや不要な列・行まで含めてしまうと、Excelが無駄な検索処理を行ってしまうため、ファイル全体の動作が遅くなる原因となります。

対策:
検索・戻り範囲は明示的に必要な範囲だけを指定しましょう。
例:XLOOKUP(A2, B2:B1000, C2:C1000)

XLOOKUP関数の範囲設定


複雑なネスト構造や関数との併用

XLOOKUPを他の関数(IF、TEXT、SUBSTITUTEなど)と組み合わせて使っている場合、式の複雑化が処理負荷を高める原因になります。特に「IF関数の中でXLOOKUPを使う」や「XLOOKUPの戻り値にさらに別の関数を適用する」ような入れ子構造は注意が必要です。

XLOOKUP関数のネスト・関数併用例

複数のXLOOKUPをIFS関数の中にネストするような構文は、処理が重くなりやすい典型例です。
同じ検索処理を何度も行っているため、Excelがその都度すべてを評価してしまいます。
特に行数が多い表でこのような式を使うと、体感でかなり遅くなることがあります。

対策:
式を簡略化したり、繰り返し使う処理はLET関数で一時変数化することで処理を軽減できます(詳細は後述)。

↓式の簡略化の例:

別セルでXLOOKUP関数の計算を行う

処理を分けて関数の繰り返し計算を防ぐと、
ファイルが軽くなりやすくなります。

【例】
K2セル:=XLOOKUP(J2,A2:A21,H2:H21)
L2セル:=IFS(K2>50,”有”,K2>10,”少”,K2<=10,”発注”)

XLOOKUPのような検索関数を同じ数式の中で繰り返し使うと、処理が重くなります
処理結果を一度別のセルに取り出してからIFやIFSで評価する方法も、軽量化と見やすさの両方に効果的です。

検索方法が「近似一致」になっている

XLOOKUPの第5引数(検索モード)を省略していると、既定では**「近似一致(昇順)」が適用**されます。この場合、Excelは「並んでいる前提」で検索を行うため、予期せぬ動作や時間のかかる処理が発生することもあります。

対策:
第5引数を 「完全一致(0)」 に明示することで、検索の精度と速度が安定します。
例:=XLOOKUP(J4,A2:A21,B2:B21,"該当なし",0)

検索モードを指定する

一致モードを省略すると「近似一致」として計算されるため、
該当データがない場合にも近い値を探してしまいます。
この処理には余計な計算が発生するため、完全一致よりも処理が重くなる傾向があります。

複数条件のXLOOKUPで配列演算が過剰になっている

複数条件でXLOOKUPを使う場合、(条件1=範囲1)*(条件2=範囲2) のような 配列演算 を行うことがあります。このような計算は、TRUE/FALSEを数値に変換して掛け合わせる演算が多数発生するため、データ量が多いと極端に重くなることがあります。

対策:
条件の絞り込みを事前に行ったり、FILTER関数との併用を検討することで負荷を分散できます。


再計算のトリガーが頻繁に発生している

XLOOKUPは、他のシートやファイルを参照する場合や、複雑な依存関係がある場合、少しの変更で全体が再計算されることがあります。これが繰り返されることで、「ファイル全体が重い」と感じる要因になります。

対策:
必要に応じて「再計算モード」を手動に切り替える、または参照先の構成を見直すことが効果的です。

XLOOKUPを高速化するための対策とやり方

XLOOKUP関数による処理の遅さは、使い方を少し見直すだけでも改善できる場合があります。ここでは、重くなってしまったXLOOKUPを効率よく軽くするための対策方法を紹介します。


範囲は必要な部分だけを明示的に指定する

最も基本的な対策は、「範囲を絞ること」です。
たとえば「B:B」のように列全体を指定していると、約100万行すべてが対象となってしまい、大きな負荷がかかります。

XLOOKUP関数の範囲設定

例(改善前)

=XLOOKUP(A2, B:B, C:C)

例(改善後)

=XLOOKUP(A2, B2:B1000, C2:C1000)

名前付き範囲やテーブル機能を使うと、動的に対応しつつも範囲を限定できるのでおすすめです。

XLOOKUP関数の範囲設定テーブルを利用した場合


LET関数を使って重複処理を一時変数化する

XLOOKUPの中で同じ範囲を何度も参照している場合は、LET関数を使って一時変数に格納すると処理が軽くなります。
これは中~上級者向けのテクニックですが、大量の検索処理では特に効果的です。

↓XLOOKUP関数とIFS関数のネストの例:
 XLOOKUP関数で在庫数を呼び出す処理を3回行うことになる。
XLOOKUP関数のネスト・関数併用例

↓LET関数で式を簡略化した場合:

=LET(
在庫数, XLOOKUP(J2, A2:A21, H2:H21),
IFS(在庫数 > 50, "有", 在庫数 > 10, "少", 在庫数 <= 10, "発注")
LET関数を利用して処理を軽減する例
LET関数を使うことで、同じ処理や範囲を1回だけ評価できるため、特に複数回XLOOKUPを使っている場合は大幅な処理軽減が見込めます。関数が増えてきた場合は、積極的に活用を検討してみましょう。

検索方法や検索方向を明示的に設定する

XLOOKUPの第5引数(検索方法)や第6引数(検索方向)を省略すると、Excelの既定動作が使われ、思わぬ動作や処理の遅延につながることがあります

おすすめの指定方法:

=XLOOKUP(A2, B2:B1000, C2:C1000, "", 0, 1)
  • 第5引数 0 → 完全一致(基本)

  • 第6引数 1 → 上から下への検索(標準)


FILTERやINDEX+MATCHへの切り替えを検討する

XLOOKUPで「複数条件」や「抽出したデータを一覧表示」したいとき、FILTER関数のほうが処理が軽い場合があります。また、古いExcelを使っている環境では、INDEX+MATCHの組み合わせの方が安定して高速なケースもあります。

それぞれの関数の特性を理解したうえで、用途に応じて使い分けることが最も効果的です

↓FILTER関数の利用例

FILTER関数利用例・セール価格絞り込み

↓INDEX+MATCHの組み合わせの例

INDEX・MATCH活用例_複数条件絞り込み

※FILTER関数、INDEX+MATCHの組み合わせについての比較については以下の記事にて詳しく解説しています。

XLOOKUP・FILTER・INDEX+MATCHの違いと使い分けを実例付きで徹底解説


再計算モードを「手動」に設定して作業する

大きなファイルを編集している場合は、再計算モードを「手動」に変更しておくと、編集中の動作が格段に軽くなります。

設定方法:
Excel上部メニュー →「数式」タブ →「計算方法の設定」→「手動」

※編集が終わったら F9キー で再計算できます。

手動計算設定

再計算を手動で行う方法などについては以下の記事でも紹介しています。

Excelの再計算を止めるには?値の固定&数式を保持する対策法


Power Queryで事前処理しておく

大量データや複雑な集計が必要な場合は、XLOOKUP関数で処理する前に、Power Queryで前処理をしておくとファイルが軽くなります
たとえば不要な列の削除や条件での絞り込みをPower Query側で済ませておくことで、Excelの計算負荷を減らせます。

Power Queryを使えば、次のような処理が可能です:

  • 重複削除や条件抽出

  • 列の分割や統合

  • データ型の統一

XLOOKUPの対象がシンプルな表になれば、それだけ関数の処理も速くなります。

PowerQueryは[データ]→[データの取得と変換]メニューで操作できます。

PowerQueryメニュー


✅まとめ(次章または末尾案)

XLOOKUP関数は非常に便利ですが、扱い方次第でExcel全体のパフォーマンスに影響することがあります。
今回ご紹介したように、範囲の見直し・関数の整理・再計算の工夫などを行えば、動作を軽く保つことが可能です。

もし複数条件での検索が重いと感じる場合は、FILTER関数やPower Queryなどの代替手段も視野に入れてみてください。

【関連記事】