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倍速くなる理由
=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関数を評価してデータを出力します
- IF関数が最初のFILTERの結果が空白セルかどうかを判断します。
- LET関数の利用
- LET関数を使用すると、FILTER関数の結果を一度だけ計算し、その結果を変数に保存します。
この変数を再利用することで、計算の重複がなくなり、計算効率が向上します
- LET関数を使用すると、FILTER関数の結果を一度だけ計算し、その結果を変数に保存します。
最後に
LET関数を使用することで、複雑なデータ処理を簡素化し、処理速度の向上を図ることができます。
「この数式、複雑だな…」
「数式の処理が遅いな…」
そんな時は、LET関数を使ってみるといいかもしれませんね。
参考記事:
Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。
構文に関する記事
Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。
ダイアログボックスの使い方に関する記事
Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。
参照形式に関する記事
関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。