Menu

LET関数の使い方: 数式の中で値に名前を付ける

=LET(total,SUM(B2:B6),IF(total>500,total*0.9,total))は合計を一度だけ計算し、totalという名前を付けて2回使います。名前を付けた部分は一度しか計算されないので、LETを使うと長い数式が短く、読みやすく、速くなります。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=LET(total,SUM(B2:B6),IF(total>500,total*0.9,total))は、B2:B6を一度だけ合計してその結果にtotalという名前を付け、その名前を2回使います。1回目は判定に、2回目は結果として返すためです。LETがないと、=IF(SUM(B2:B6)>500,SUM(B2:B6)*0.9,SUM(B2:B6))のようにSUMを3回書くことになります。

500を超える注文は10%引き
D2
ABCD
1OrderAmountTotal to pay
2A-101120580.5
3A-10295
4A-103210
5A-10480
6A-105140
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

注文の合計は645で500を超えるので、D2は580.5を表示します。B4を50に変えると合計は485に下がって上限を下回るので、D2は割引なしの485を表示します。

LET関数の構文

=LET(name1, value1, [name2, value2, ...], calculation)
  • 各name(名前)は自分で選ぶ単語で、その後に名前が表すvalue(値)を書きます。数値、範囲、数式のどれでも構いません。
  • 組は126個まで定義できます。値には、それより前に定義したどの名前でも使えます。
  • 最後の引数はcalculation(計算)で、名前を使って結果を出します。

LETにはExcel 2021、Excel 2024、Microsoft 365のいずれかが必要です。Excel 2019以前では#NAME?になります。Googleスプレッドシートにも同じ構文のLETがあります。

複数の変数を使うLET

名前を使うと、行ごとの数式が文のように読めます。ここでは各行で小計を出し、100を超えたら10%引きにしています:

行ごとの割引
D2
ABCD
1ItemPriceQtyTo pay
2Pen2.51025
3Bag403108
4Lamp35270
5Mug815108
6Desk1501135
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

バッグの120は108に、マグカップの120も108に、机の150は135になります。ペン(25)とランプ(70)はそのままです。数式はD2に書いて下にコピーしたもので、subtotalは行ごとに違う数値を表します。

名前は1つ前の名前を使って作れます。=LET(x,2,y,x*3,x+y)はxを2、yを6にして、8を返します。

検索を一度だけ計算して再利用する

IFの中に2回出てくる検索は2回実行されます。LETなら一度で済みます。次の数式は価格に20%を足したものを返し、商品がなければメッセージを返します:

一度検索して、2回使う
F2
ABCDEF
1ProductRegionPriceLook forPrice + 20%
2AppleNorth1.2Pear1.8
3PearSouth1.5KiwiNot found
4CarrotEast0.8
5BreadNorth2.4
6MilkSouth1.1
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Pearは見つかるので、F2は1.8を表示します。Kiwiはリストにないので、XLOOKUPは4つ目の引数で指定した空の文字列を返し、F3はNot foundを表示します。A4にKiwiと入力すると、F3はその価格に20%を足した値に変わります。

FILTERと組み合わせたLET

LETが最も役に立つのは、抽出した範囲が2回以上必要になるスピルする配列です。次の数式は、1つの数式の中で一致する行に名前を付け、その行数を数え、売上の平均を出します:

1つの地域のまとめ
F2
ABCDEF
1NameRegionSalesRegionNorth
2AnnNorth120Summary3 reps, average 126.7
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Northなら「3 reps, average 126.7」と表示されます。F1でSouthを選ぶと「2 reps, average 87.5」になります。INDEX(rows,0,3)は抽出した行の3列目を取り出します。LETがないと、FILTERを2回書くことになります。

ほかの月を空白にした月のカレンダー

SEQUENCEのページのカレンダーには、前後の月の日も表示されます。LETで月の初日と日付のマス目に名前を付け、その月以外の日付をすべて空白にします:

2026年4月、ほかの月は空白
A2
ABCDEFG
1SunMonTueWedThuFriSat
21234
3567891011
412131415161718
519202122232425
62627282930
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

DATE(2026,4,1)をDATE(2026,5,1)に変えると、マス目が5月に描き直されます。月の初日に一度だけ名前を付けているので、変える日付は3つではなく1つだけです。

練習: LETで送料を計算する

やってみよう
D2
ABCD
1OrderAmountTo pay
2A-101120
3A-10295
4A-103210
5A-10480
6A-105140
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: D2で、B2:B6の金額を合計してください。合計が800未満なら送料として25を足し、そうでなければ合計をそのまま返します。

LETの名前の規則とエラー

LETのエラーのほとんどは名前から来ます:

  • 名前は英字で始め、スペースを含めてはいけません。unit priceは失敗するので、unit_priceかunitPriceを使います。
  • 名前はセル番地に見えてはいけません。a1とtax2026はExcelではセル番地なので(TAXは列名です)、LETは#NAME?で受け付けません。rateやtax_2026なら使えます。
  • 名前は使うたびにまったく同じ綴りで書きます。使う場所で打ち間違えると、Excelはその綴りの関数か名前付き範囲を探すので、#NAME?になります。
  • 最後の引数は計算でなければなりません。=LET(x,5)には名前と値はありますが返すものがないので、Excelは受け付けません。
  • 名前はその数式の中にしか存在しません。多くのセルで計算を再利用するなら、代わりに名前付きのLAMBDAとして保存します。
=LET(a1,5,a1*2)          #NAME?  (a1 is a cell address)
=LET(rate,8%,100*rate)   8

よくある質問

ExcelのLET関数は何をする関数ですか?

1つの数式の中で値に名前を付けます。=LET(total,SUM(B2:B6),total*2)はSUM(B2:B6)を一度だけ計算してtotalと呼び、totalの2倍を返します。名前はその数式の中にしか存在しません。

LETで2つ以上の変数を使うには?

最後の計算の前に、名前と値の組を足します:=LET(price,B2,qty,C2,price*qty)。後の値は前の名前を使えます。=LET(x,2,y,x*3,x+y)は8を返します。

LETの数式が#NAME?を返すのはなぜですか?

ExcelにLETがない(Excel 2021かMicrosoft 365が必要)、使う場所で名前の綴りが違う、またはa1やtax2026のようにセル番地に見える名前や数字で始まる名前など、使えない名前を付けている、のどれかです。

LETを使うとExcelの数式は速くなりますか?

なることがあります。LETがないと、IFの中に2回書いた同じXLOOKUPのような繰り返しの式は、出てくるたびに計算されます。LETを使えば一度だけ計算され、その結果が再利用されます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める