LET 関数

適用先
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac

LET関数は、計算結果に名前を割り当てます。 これにより、中間計算、値、定義名などを数式内に格納できます。 これらの名前は、 LET 関数のスコープ内でのみ適用されます。 プログラミングの変数と同様に、 LET は Excel のネイティブ数式構文を使用して実現されます。

Excel で LET 関数を使用するには、名前と関連する値のペアと、それらをすべて使用する計算を定義します。 少なくとも 1 つの名前と値のペア (変数) を定義する必要があり、 LET は最大 126 個をサポートします。

利点

  • パフォーマンスの向上 同じ式を 1 つの数式に複数回記述すると、その結果が複数回計算されます。 LET では、名前で式を呼び出し、Excel で 1 回計算できます。
  • 簡単な読み取りと構成 特定の範囲/セル参照が何を参照したか、計算が何を行っていたか、同じ式をコピー/貼り付けたかを覚えておく必要はありません。 変数を宣言して名前を付ける機能を使用して、自分と式のコンシューマーにとってわかりやすいコンテキストを割り当てることができます。

構文

= LET(name1、name_value1、calculation_or_name2、[name_value2、calculation_or_name3...])

引数 説明
name1
必須
最初に割り当てる名前。 文字で始まる必要があります。 数式の出力であったり、範囲の構文と競合していたりしてはなりません。
name_value1
必須
name1 に割り当てられている値。
calculation_or_name2
必須
以下のいずれかになります。
  • LET関数内のすべての名前を使用する計算。 これは、 LET 関数の最後の引数である必要があります。
  • 2 番目の name_value に割り当てる 2 番目の名前。 名前が指定されている場合、name_value2 と calculation_or_name3 が必須です。
name_value2
任意
calculation_or_name2 に割り当てられている値。
calculation_or_name3
任意
以下のいずれかになります。
  • LET関数内のすべての名前を使用する計算。 LET関数の最後の引数は、計算である必要があります。
  • 3 番目の name_value に割り当てる 3 番目の名前。 名前が指定されている場合、name_value3 と calculation_or_name4 が必須です。

  • 最後の引数は、結果を返す計算である必要があります。
  • 変数の名前は、名前マネージャーで使用できる有効な名前と一致します。 たとえば、"a" は有効ですが、"c" は R1C1 形式の参照と競合するため有効ではありません。

使用例

使用例 1

単純な式 "SUM(x、1)" の場合、x は値を割り当てることができる名前付きの変数です (この場合、x には値 5 が割り当てられます)。

= LET(x, 5, SUM(x, 1))

この数式をセルに入力すると、値 6 が返されます。

使用例 2

たとえば、未加工の売上データがあり、そのデータをフィルター処理して 1 人のユーザーを表示し、空白セルにダッシュを追加するとします。

フィルター処理されていないデータ フィルター処理されたデータ
フィルター処理されていない売上データ フィルター処理された売上データ

上記は LETなしで実行できますが、 LET を使用すると、数式の読みやすさが向上し、 LETなしで 2 倍の速度で計算されます。

サンプル データ

この例を自分で調べる場合は、次の表を空白のワークシートのセル A1 にコピーします。

社員名 地域 製品 利益
Amy 東部 りんご $1.33
Fred 南部 バナナ $0.09
Amy 西部 マンゴー $1.85
Fred 北部 $0.82
Fred 西部 バナナ $1.25
Amy 東部 りんご $0.72
Fred 北部 マンゴー $0.54

元の数式

=IF(ISBLANK(FILTER(A2:D8,A2:A8="Fred")),"-", FILTER(A2:D8,A2:A8="Fred"))

を使用した数式 LET

=LET( filterCriteria,"Fred", filteredRange, FILTER(A2:D8,A2:A8=filterCriteria), IF(ISBLANK(filteredRange),"-", filteredRange))