LET関数は簡素化だけじゃない!?処理速度が倍増します!!

LET関数を使用することで、複雑なデータ処理を簡素化し、処理速度の向上を図ることができます。

「この数式、複雑だな…」

「数式の処理が遅いな…」

そんな時は、LET関数を使ってみるといいかもしれませんね。

EXCELのLET関数は、
変数を定義して、数式を構築するために使用されます。

を使用すると、可読性と高速化の恩恵が受けられます。

この記事では、Microsoftの公式ガイドを日本人向けにアレンジして、
LET関数による可読性と処理速度の向上に関して解説します。

本例では2倍ですが、関数式内に同じ計算式が複数回登場するほど、
その効果は倍々に増大し、3倍、4倍とさらに処理速度を向上させることが可能です。

LET関数の使用例 : 売上データのフィルタリング

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

LETを使用しなくても、この処理は可能です。
しかし、LETを使用することで、数式の読みやすさが向上し、計算速度も2倍に速くなります。

フィルター処理されていないデータ(空白セルをそのまま保持)

社員名地域製品利益
田中東部リンゴ¥213
佐藤南部バナナ¥14
田中西部マンゴー¥296
佐藤北部¥131
佐藤西部バナナ¥200
田中東部リンゴ¥115
佐藤北部マンゴー¥86

フィルター処理されたデータ(「佐藤」のデータのみ、空白セルにはダッシュ表示)

社員名地域製品利益
佐藤南部バナナ¥14
佐藤北部¥131
佐藤西部バナナ¥200
佐藤北部マンゴー¥86

元の数式(LET関数を使用しない場合)

=IF(ISBLANK(FILTER(A2:D8, A2:A8=”佐藤”)), “-“, FILTER(A2:D8, A2:A8=”佐藤”))

FILTER関数で「佐藤」のデータを抽出し、その結果の中に空白セルがあれば「-」を表示する関数式です。

LET関数を使用した関数式

フィルター条件「佐藤」を指定し、指定された範囲からフィルタリングします。

フィルタリングされた結果が空白セルの場合は「-」を表示し、
そうでない場合はフィルタリングされたデータをそのまま表示します。

=LET(
フィルター条件, “佐藤”,
フィルター範囲, A2:D8,
フィルター結果, FILTER(フィルター範囲, A2:A8=フィルター条件),
IF(ISBLANK(フィルター結果), “-“, フィルター結果)
)

LET関数により、以下などのメリットが生まれます。


  • 数式の簡素化
    • 本例では効果が直感的には分かりづらいが、複雑な関数式ではそのメリットを明確に感じられる
  • 数式の柔軟な修正
    • LET関数を使用することで、特定の要素や式の部分を簡単に変更可能
    • 例:「佐藤」という条件を「田中」に変更し、条件変更が容易
  • 処理速度の向上
    • 全体の処理速度は2倍に高速化されている

試してみた方へのトラブルシューティング

もし試してみた際に、空白セルにダッシュが表示されない場合、データ内に目に見えないスペースや改行が含まれている可能性があります。

解決方法として、空白セルのデータ内にあるこれらの不要な文字を削除してみてください。


LET関数の構文

LET関数は変数を定義して、数式を構築するために使用されます。

=LET(名前1, 名前値1, 計算または名前2, [名前値2,計算または名前3,…])
※[]は省略可能です


  • 名前1:
    • 変数の名前。
  • 名前値1:
    • 名前1の変数に割り当てる値。
  • 計算または名前2
    • 変数を使用する最終的な計算式
    • 名前2を使用する場合は、複数変数を定義する場合に使用

LET関数のより詳しい解説はこちら

LET関数の場合、2倍速くなる理由
LET関数の場合、2倍速くなる理由

=IF(ISBLANK(FILTER(A2:D8, A2:A8=”佐藤”)), “-“, FILTER(A2:D8, A2:A8=”佐藤”))

こちらの関数式で、

FILTER(A2:D8, A2:A8=”佐藤”)

が2回評価されるため、計算が重複してしまいます。

これがパフォーマンスに影響を与える原因です。

LET関数を使用すると、FILTER関数の結果を1度だけ計算し、その結果を変数に保存します。
その後、この変数を再利用することで、計算の重複を避け、効率的に処理を進めることができます。

以下、LET関数の計算プロセスです。


  • 1度目の評価
    • FILTER関数がデータをフィルタリングし、「佐藤」に関連する行だけを抽出します
  • 2度目の評価
    • IF関数が最初のFILTERの結果が空白セルかどうかを判断します。
      もし空白セルなら、「-」を出力し、そうでなければ再度同じFILTER関数を評価してデータを出力します
  • LET関数の利用
    • LET関数を使用すると、FILTER関数の結果を一度だけ計算し、その結果を変数に保存します。
      この変数を再利用することで、計算の重複がなくなり、計算効率が向上します

最後に

LET関数を使用することで、複雑なデータ処理を簡素化し、処理速度の向上を図ることができます。

「この数式、複雑だな…」

「数式の処理が遅いな…」

そんな時は、LET関数を使ってみるといいかもしれませんね。


参考記事

Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。

構文に関する記事

Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。

ダイアログボックスの使い方に関する記事

Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。

参照形式に関する記事

関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。