Excelの長い数式は、動いていても直すのが怖くなりがちです。そんなときに有効なのが、ExcelのLET関数を使った数式の切り分けです。結論から言うと、LET関数は「同じ計算を何度も書いている部分」に名前を付けて外へ出し、「判定」と「表示」を最後に分けるだけで、読みやすさも直しやすさも大きく変わります。
とくに、IFが長い、同じ掛け算や文字列整形が何度も出る、XLOOKUPやTEXTまで混ざって見づらい、という数式には相性が抜群です。ここでは、LET関数の基本仕様だけでなく、どんな式を切り分けるべきか、実務で失敗しにくい順番、注意点、代替策まで、すぐ使える形で整理します。
ExcelのLET関数で数式を切り分けるときの結論
LET関数の考え方はシンプルです。数式をいきなり完成させようとせず、次の順で名前を置いていきます。
入力 → 中間計算 → 判定 → 表示
基本の型は、次の形で覚えると実務で崩れにくくなります。
=LET(
input1, 参照や値,
calc1, input1を使った計算,
status, 条件判定,
output, 表示用の式,
output
)
LET関数は、数式内で名前と値のペアを定義して最後の計算に使う関数です。Microsoftも、同じ式を複数回書く場合の計算回数を減らせることと、読みやすさを上げられることを主な利点として挙げています。(Microsoft サポート)
LET関数の基本仕様を最初に押さえる
Microsoftの公開情報ベースで、最低限押さえておきたい仕様は次のとおりです。(Microsoft サポート)
| 項目 | 内容 | 実務での意味 |
|---|---|---|
| 対応環境 | Excel for Microsoft 365、Excel 2021、Excel 2024、Excel for the web、Mac版など | 共有先のExcelが古い場合は事前確認が必要 |
| 役割 | 数式内に一時的な名前を定義できる | 長い式を段階化しやすい |
| 基本構文 | =LET(name1, value1, ..., calculation) | 途中結果に名前を付けて最後に返す |
| 命名ルール | 名前は文字で始め、参照構文と衝突しない必要がある | 意味のある変数名を付けるべき |
| 上限 | 名前と値のペアは最大126組 | ここまで増えるなら1セル完結を見直した方がよい |
ここで大事なのは、LET関数は「シート全体で使い回す名前」ではなく、「その数式の中だけで通用する名前」だという点です。つまり、他のセルに影響を出さずに式を分解できます。逆に言えば、同じロジックを別セルでも何度も使うなら、LETだけで押し切るより別の方法を検討した方がきれいにまとまります。(Microsoft サポート)
どんな数式をLETで切り分けるべきか
次のような数式は、LET関数にすると効果が出やすいです。
| 症状 | LETに向く理由 | 典型例 |
|---|---|---|
| 同じ計算が2回以上出てくる | 1回だけ計算して使い回せる | 売上計算、割引後金額、税計算 |
| IFが長くて読みにくい | 条件や判定結果に名前を付けられる | status、isValid など |
| 文字列整形が何度も出る | 前処理を1回にまとめられる | TRIM、SUBSTITUTE、TEXT |
| 1セルで納品したい | ヘルパー列なしで整理できる | 報告シート、提出用テンプレート |
逆に、途中結果を周囲に見せながらレビューしたい場合は、LETよりヘルパー列の方が向いています。
見た目は1セルで美しくても、他の人が検算できないなら、実務ではむしろ不利です。
実務で失敗しない切り分け手順
まずは重複している計算を1つだけ外に出す
たとえば、B2が単価、C2が数量、D2が割引率だとして、達成判定と金額表示を1つのセルに出したい場面を考えます。
切り分け前の数式は、こうなりがちです。
=IF((B2*C2)*(1-D2)>=100000,"達成","未達")&" / "&TEXT((B2*C2)*(1-D2),"#,##0円")
この式の問題は明確です。(B2*C2)*(1-D2) を2回書いています。金額計算のロジックが変わったら、2か所とも直さなければなりません。
まずはこの重複部分だけを名前に置き換えます。
=LET(
net, (B2*C2)*(1-D2),
IF(net>=100000,"達成","未達")&" / "&TEXT(net,"#,##0円")
)
これだけでも、修正箇所は1つに減ります。
LET関数の最初の一歩は、式全体を美しくすることではなく、重複の削除です。
入力・加工・判定・表示の順に並べる
次に、同じ式をさらに読みやすくします。
=LET(
gross, B2*C2,
net, gross*(1-D2),
status, IF(net>=100000,"達成","未達"),
status&" / "&TEXT(net,"#,##0円")
)
この形にすると、上から読んだだけで流れが分かります。
grossは元金額netは割引後金額statusは判定- 最後の1行は表示
この順番が重要です。
途中で TEXT を入れて文字列化してしまうと、その後の再計算や比較が面倒になります。数値計算は先、表示整形は最後に寄せるのが基本です。
文字列整形でも同じ考え方で切り分ける
LET関数は金額計算だけでなく、文字列の前処理にも向いています。
たとえば、会社名から「株式会社」を除去し、空白を整えてから略称を作るなら、次のように書けます。
=LET(
cleanName, TRIM(SUBSTITUTE(A2,"株式会社","")),
IF(cleanName="","",LEFT(cleanName,3)&"-"&LEN(cleanName))
)
この書き方の良いところは、TRIM(SUBSTITUTE(...)) を何度も書かなくて済むことです。
文字列の正規化は、見た目以上に重複しやすい処理です。LETで先にまとめると、あとから修正しやすくなります。
LET関数で途中結果を安全に確認するコツ
LET関数の実務的な強みは、途中結果を一時的に返しやすいことです。
たとえば、割引後金額だけ確認したいなら、最後の返り値を net に変えるだけで済みます。
=LET(
gross, B2*C2,
net, gross*(1-D2),
net
)
これで値が合っていると確認できたら、最後の行を元に戻せばOKです。
ヘルパー列を増やさずに段階確認できるのは、LET関数の大きな利点です。
さらに、複雑な式ではExcelの「数式の検証」を使うと効率が上がります。Microsoftの案内でも、[数式] タブから数式を1段ずつ評価し、下線部の値を順に確認できます。IFのどこで分岐したか、参照がどの値として解釈されたかを追えるので、LETで切り分けた式の確認にも向いています。(Microsoft サポート)
よくある失敗と回避策
命名は地味ですが、保守性を大きく左右します。MicrosoftのLET関数の説明でも、変数名は有効な名前である必要があり、例として c は R1C1 形式の参照と衝突するため有効ではないとされています。短すぎる名前は可読性も落としやすいので、意味のある名前を付けるのが安全です。(Microsoft サポート)
| 失敗 | 何が起きるか | 回避策 |
|---|---|---|
a、b、tmp のような名前ばかり使う | 後から読めない | 値の意味で命名する。gross、net、status など |
途中で TEXT を使う | 数値が文字列になり再利用しにくい | 表示整形は最後に回す |
最外周をすぐ IFERROR で包む | どこで壊れたか分からなくなる | まず途中結果を返して原因を特定する |
| 1セルに業務ルールを全部詰め込む | 引き継ぎ不能になる | 4〜6段階を超えたらヘルパー列も検討する |
| 元の式を消してから作業する | 失敗時に戻せない | 別セルで複製してから書き換える |
とくに多いのが、LETで整理したつもりが、実は1セルに詰め込みすぎているケースです。
LETは分解の道具ですが、無限に複雑な式を正当化する道具ではありません。
LET関数が向く運用と代替策
再利用範囲で考えると、選び分けしやすくなります。LETの名前はその式の中だけで使われます。一方で、Excelの「名前の管理」は既定でブックスコープになり、必要に応じてワークシートスコープにも変更できます。さらにLAMBDAは、ブック全体で呼び出せる再利用可能な関数を作るための機能です。Microsoftの公開情報では、LAMBDAの適用先は Microsoft 365、Excel 2024、Excel for the web 系で、LETより対応範囲が狭い点にも注意が必要です。(Microsoft サポート)
| 手段 | 向く運用 | 強み | 注意点 |
|---|---|---|---|
| LET関数 | そのセルの長い式を整理したい | 列を増やさず読みやすくできる | 再利用はその式の中だけ |
| ヘルパー列 | 途中値を見せたい、レビューしたい | 誰でも追いやすい | 列が増える |
| 名前の管理 | 共通参照や定数を複数式で使いたい | ブック単位で再利用しやすい | 参照先が見えにくくなることがある |
| LAMBDA | 同じロジックを何度も使う | 独自関数として呼び出せる | 対応環境の確認が必要 |
「1つのセルを読みやすくしたい」なら LET。
「途中値も見せたい」なら ヘルパー列。
「複数セルで同じ処理を繰り返す」なら LAMBDA。
この考え方でほぼ迷いません。
共有先に古いExcelが混ざるなら互換性を先に見る
Microsoftの互換性情報では、新しい関数を含むブックを以前のバージョンのExcelで再計算すると #NAME? になることがあり、場合によっては数式に _xlfn プレフィックスが付くことがあります。社内外へ配布するファイルで相手の環境が読めない場合、LETを導入する前に共有先のバージョン確認をした方が安全です。(Microsoft サポート)
とくに次のような運用では、LETより別案の方が安定します。
- 提出先のExcel環境がまちまち
- 一部の人が古い買い切り版を使っている
- 値だけ見えればよく、数式の保守は不要
- 他部門があとで加工するため、途中列が見えていた方がよい
この場合は、ヘルパー列で見える化するか、最終結果だけ値貼り付けにする方がトラブルが少なくなります。
LETでも救えない長大数式はある
Excelの数式には、関数のネスト64階層、1関数255引数、数式の内部長16,384バイトなどの上限があります。LETは整理には有効ですが、巨大な1セル数式を無限に延命できるわけではありません。長すぎる式は、LETで一度整えたうえで、ヘルパー列やLAMBDAへ分割する判断が必要です。(Microsoft サポート)
迷ったらこの順で1本だけ直す
最初の1本は、次の順で進めると失敗しにくいです。
- 今の長い数式を別セルにコピーする
- 同じ計算が2回以上出る部分だけに名前を付ける
- その次に、判定部分へ
statusのような名前を付ける - 表示用の
TEXTやIFERRORは最後に回す - 途中結果を返して確認し、問題なければ最終出力に戻す
最初から完璧な分解を狙わなくて大丈夫です。
まずは「同じ計算を1回にする」だけでも、数式の保守性は大きく上がります。
次に手を付けるなら、いま一番長い数式ではなく、同じ式が2回以上出てくる数式から始めてください。
LET関数の効果を最も実感しやすく、書き換えの失敗も少ないからです。1本うまくいけば、IFが多い式や文字列整形の式にも、そのまま横展開できます。

コメント