【Excel】LET関数で長い数式を整理する方法

この記事は約7分で読めます。

今回は、ExcelのLET関数を使い、同じ計算を繰り返す長い数式を整理して、確認しやすくする方法を紹介します。

ExcelのLET関数とは

LET関数は、数式の途中で計算結果やセル範囲に名前を付け、その名前を後続の計算で利用する関数です。プログラムで一時的な変数を作る考え方に近く、ひとつの数式内だけで名前を使用します。
通常の数式では、同じ計算が複数回必要になると、その式を必要な回数だけ記述します。LET関数なら、最初に計算内容を名前へ割り当て、後半では短い名前で参照できます。これにより、数式の重複を減らし、計算の意図を読み取りやすくすることができます。
LET関数は、単純な合計を短くするためだけに使う必要はありません。IF関数が重なる判定、検索結果を何度も使う処理、抽出した配列を別の計算へ渡す処理など、途中結果を再利用する場面で役立ちます。

LET関数の基本構文

LET関数は、名前、名前に割り当てる値、最後に返す計算という順で指定します。基本的な考え方は次のとおりです。

  • 最初の引数で、数式内で使う名前を決める
  • 次の引数で、その名前へ値や計算式を割り当てる
  • 最後の引数で、定義した名前を使った計算結果を返す

たとえば、単価がB2セル、数量がC2セルにあり、税抜金額を求めたうえで税額を加える場合、途中の「B2*C2」に「小計」という名前を付けられます。考え方を式で示すと、「LET(小計,B2*C2,小計*1.1)」のようになります。
ここで定義した「小計」は、そのセルのLET関数内でのみ使用できます。名前の定義機能で作るブック全体の名前とは異なり、ほかのセルへ影響しません。数式ごとに閉じた名前なので、試しやすく管理範囲も明確です。

名前を付けるときのルール

LET関数の名前には、セル参照と紛らわしい文字列を使えない場合があります。「A1」のような名前はセル番地として解釈されるため、変数名には適しません。また、空白を含む名前も避けます。
短すぎる名前は入力しやすいものの、後で数式を見たときに意味を判断できないことがあります。日本語の名前を使用できる環境では、「売上」「割引後」「対象件数」のように役割が分かる名称にすると読みやすくなります。英字を使う場合も、「x」や「tmp」だけで済ませず、「subtotal」「target」など、内容を想像できる名前にします。
名前を長くしすぎると、数式全体がかえって見づらくなります。短さよりも意味の伝わりやすさを優先し、数式内で表記を統一するとよいでしょう。

LET関数で数式を簡素化する例

同じ計算を再利用する

売上から割引額を引いた金額を何度も判定に使う場合、毎回「売上-割引額」と記述すると式が長くなります。LET関数で「割引後」という名前を付ければ、条件判定と最終結果の両方で再利用できます。
たとえば、割引後の金額が0未満なら0を返し、それ以外は割引後の金額を返す処理では、IF関数の条件と結果に同じ引き算が現れます。LET関数を使うと、引き算を一度定義し、IF関数ではその名前だけを参照できます。
この方法は数式を短くするだけでなく、計算内容を変更するときにも便利です。割引後の定義を変更する場合、元の計算式を一箇所直せば、同じ名前を使う後続処理へ反映されます。

検索結果を一度だけ求める

XLOOKUP関数などで取得した結果を、IF関数で空欄判定したあとに再び表示する数式では、同じ検索式が二度登場しやすくなります。LET関数で検索結果へ「検索値」などの名前を付けると、検索処理を一度記述するだけで済みます。
検索範囲が大きい場合や、複数の条件を組み合わせる場合は、同じ式の繰り返しが数式の理解を妨げます。取得する処理と、取得後にどう表示するかという処理を分けると、エラーの原因も探しやすくなります。
検索結果が見つからない場合の扱いは、XLOOKUP関数の見つからない場合の引数やIFERROR関数と組み合わせて調整します。LET関数はエラーを自動的に解決する関数ではないため、各関数の役割を分けて考えます。

日付判定の基準をまとめる

期限管理表では、今日の日付、期限日、完了状態などを使って表示内容を切り替えることがあります。TODAY関数を条件ごとに何度も書く代わりに、「基準日」という名前へ割り当てると、判定の基準が明確になります。
さらに、「残日数」に期限日から基準日を引いた結果を割り当てれば、残日数が負なら期限超過、0なら当日、正なら期限前という判定を組み立てられます。数式を読むときも、日付の引き算そのものより「残日数」という名前のほうが目的を把握しやすくなります。

FILTER関数の抽出結果を再利用する

動的配列に対応したExcelでは、FILTER関数で抽出した結果をLET関数の名前へ割り当て、並べ替えや件数確認などへ利用できます。
たとえば、部署が一致する行だけを抽出し、その結果をSORT関数へ渡す場合、抽出結果を「対象データ」として定義できます。数式の前半でデータを絞り、後半で表示順を整える構造になるため、処理の段階が見えやすくなります。
抽出結果が0件の場合には、FILTER関数の該当なしに対応する引数を指定します。後続処理が空の結果をどう扱うかも確認し、表示用の文字列と計算用の配列を混同しないようにします。

複数の名前を定義する方法

LET関数では、名前と値の組み合わせを複数指定できます。たとえば「単価」「数量」「小計」を順に定義し、最後に小計へ手数料を加えた結果を返す構成が可能です。
後から定義する名前では、先に定義した名前を使用できます。「小計」の値として「単価*数量」を指定するような書き方です。数式の処理順に沿って名前を並べると、上から読んだときに計算の流れを追いやすくなります。
一方、まだ定義していない後方の名前を先に参照する構成は避けます。名前の順序を入れ替えたときに参照関係が崩れることもあるため、入力値、途中結果、最終判定の順に並べると管理しやすくなります。

数式を作るときの手順

複雑な数式を最初からLET関数の中へ書き込むと、括弧や引数の区切りを間違えやすくなります。次の順で組み立てると確認しやすくなります。

  1. まず通常の数式で、期待する結果が出ることを確認する
  2. 数式内で重複している計算や、意味を付けたい途中結果を探す
  3. その部分をLET関数の名前と値として定義する
  4. 元の計算部分を定義した名前へ置き換える
  5. 数式の検証機能で、途中の評価結果を確認する

数式バー内で一部を選択し、対応する操作で計算結果を確認する方法もあります。ただし、編集内容を確定しないよう注意が必要です。複雑な場合は、途中計算を一時的に別セルへ出して正しさを確認してから、一つのLET関数へまとめる方法も実用的です。

LET関数を使う際の注意点

対応するExcel環境を確認する

LET関数は、利用するExcelのバージョンや更新状況によって使用できないことがあります。LET関数に対応していない環境でブックを開く可能性がある場合は、共有相手の環境を確認します。
互換性を優先するなら、補助列へ途中計算を分ける方法も選択肢です。ひとつのセルへ収めることだけが正解ではありません。ほかの人が保守する表では、補助列のほうが処理を追いやすい場合もあります。

数式を詰め込みすぎない

LET関数を使えば長い処理を一つのセルへまとめられますが、条件分岐や検索を際限なく追加すると、名前を付けても理解しにくくなります。
数式の役割が複数に分かれる場合は、補助列、別シート、Power
Queryなどへ処理を分けることを検討します。LET関数は複雑さを隠すためではなく、計算の区切りを明確にするために使うのが基本です。

エラー処理を最後に確認する

0件、空白、文字列、0除算、検索対象なしなど、入力データの例外を確認します。IFERROR関数であらゆるエラーを空欄にすると、数式の設定ミスまで見えなくなることがあります。
想定できる例外は、元の関数が持つ引数やIF関数で個別に処理し、不明なエラーだけを調査できる状態にしておくと保守しやすくなります。

読みやすいLET関数にするコツ

  • 名前から計算内容が想像できるようにする
  • 同じ式が二度以上現れる部分を名前へ置き換える
  • 入力、途中計算、出力の順に名前を並べる
  • 数式バーで編集しにくい場合は、改行を使って区切りを見せる
  • 共有ブックでは、セルのメモや仕様書に数式の目的を残す

Excelの数式内では、編集時に改行を入れても計算結果へ影響しません。名前と値の組み合わせごとに改行すると、長いLET関数を読みやすくできます。インデントの代わりに空白を加える場合は、文字列の引用符内へ余計な空白を入れないよう注意します。

まとめ

ExcelのLET関数は、数式の途中結果へ名前を付け、同じ計算を再利用するための関数です。重複する計算、検索結果、基準日、抽出結果などを名前へ置き換えると、長い数式の構造を整理できます。
使うときは、まず通常の数式で結果を確認し、重複部分や意味を持つ途中結果をLET関数へ移します。名前は内容が分かるものにし、入力から最終結果へ向かう順序で定義します。数式の短縮だけでなく、後から修正する人が処理を追える形にすることが、LET関数を活用するポイントです。