Microsoft Excel | LET関数の使い方

この記事では、Microsoft Excelで使用できるLET関数の使い方を解説します。

LET関数を使うことによって、以下のようなメリットがあります。

  • 同じ計算式を何度も書かなくてよくなる
  • 複雑な計算式をわかりやすくできる

LET関数は、Office365で使用できる関数です。古いバージョンのExcelだと使用できません。

LET関数が使えるかどうかを確認するには、ワークシートのどこか適当なセルで「=LET」と入力してみてください。
セルの下に関数の候補が表示されると思いますが、その中にLET関数があれば、LET関数を使用することができます。

関数の候補にあるLET関数

LET関数の使い方

それでは、LET関数の使い方を見ていきましょう。

基本的なパターン

LET関数は以下の3つの引数を取ります。

  • name
  • name_value
  • calculation

わかりやすくするために、具体例から入ります。

  • 関数:LET(A,100,A+200)
  • 結果:300
LET関数の基本的なパターン

この場合、それぞれの引数は、以下の通りとなります。

  • name:A
  • name_value:100
  • calculation:A+200

最初の2つで、nameに「A」、name_valueに「100」と指定しています。
これにより、Aという名前で100という値を定義したことになります。
プログラミングに馴染みのある方は、変数Aに100を代入した、と考えていただけるとわかりやすいかもしれません。

最後のcalculationに、「A+200」と指定しています。
calculationは、LET関数が最終的に返す計算式を指定する箇所です。
上記の例では、A+200と指定していますので、先ほど定義したAが100であるというのを踏まえて、

A+200
= 100 + 200
= 300

というように計算され、300という結果が返ります。

複数のnameを定義するパターン

nameとname_valueの組み合わせは、複数指定することもできます。

  • 関数:LET(A,100,B,200,A+B)
  • 結果:300
LET関数で複数のnameを定義するパターン

この場合、nameとname_valueを2セット指定したことになります。

  • name(1):A
  • name_value(1):100
  • name(2):B
  • name_value(2):200
  • calculation:A+B

今回は、Aを100、Bを200と定義した上で、最後にA+Bを計算し、300という結果を返します。

nameの定義にnameを使用するパターン

name_valueには、すでに定義されているnameを指定することもできます。

  • 関数:LET(A,100,B,A*2,B+100)
  • 結果:300
LET関数でnameの定義にnameを使用するパターン

引数は、以下の通り指定されています。

  • name(1):A
  • name_value(1):100
  • name(2):B
  • name_value(2):A*2
  • calculation:A+B

ポイントは、Bを「A*2」と定義しているところです。
事前にAが100と定義されているため、それを利用してBを定義することができます。
この場合、Bは「A*2」、つまり「200」と定義されたことになります。

なお、このAとBの順序を逆にし、LET(B,A*2,A,100,A+B)とすると、エラーになります。
あくまでも、先に定義してあるnameだけが使用できるということです。

どういうときに使うのか?

ここからは、LET関数の使い所をふたつ挙げてみたいと思います。

同じ式が2度出てくるとき

ひとつめは、同じ式が2度出てくるときです。

よくある例として、FIND関数のエラーハンドリングをする例があります。

FIND関数は、セルの中から特定の文字列を検索する関数で、以下のような構文となっています。

FIND(検索文字列,対象,開始位置)

例えば、「abcde」という文字列の中から「c」という文字を探したい場合は、FIND(“c”,””abcde”,1)とします。
この場合、「abcde」の3番目に「c」があるため、FIND関数は3という結果を返します。

FIND関数は、指定した検索文字列が見つからなかった場合、エラー(#VALUE)を返します。
なので、複数のセルに対してFIND関数を使った結果を並べると、検索文字列が見つかった場合は数字、見つからなかった場合はエラーとなり、見づらくなってしまいます。

FIND関数で数字とエラーが混在している場合

そこで、FIND関数にエラーが発生した場合は、エラーではなく何も表示しないようにする方法が考えられます。
それを実現しようとすると、従来であれば、以下のような式を書く必要がありました。

IF(ISERROR(FIND(“c”, ”abcde”,1)),””, FIND(“c”, ”abcde”,1))

FIND関数のエラーを空白に置き換えた場合

上の式は、まず、ISERROR関数を使ってFIND関数がエラーかどうかを判定しています。
そして、エラーであれば空白(””)、エラーでなければFIND関数の結果を返します。

このとき、「FIND(“c”, ”abcde”,1)」の部分が2回登場しています。
同じ式を2回書いてしまうと、まず単純に面倒ですし、後から修正するときに片方だけ修正してしまい、もう片方を修正し漏れた、ということが発生しえます。

そのようなことを防ぐため、極力同じ式は2回書かないようにするほうが望ましいのです。

LET関数を使用すると、上記のような場合でも、同じ式を繰り返すことなく、以下のように書くことができます。

LET(
 result, FIND(“c”, ”abcde”,1),
 IF(ISERROR(result),””,result)
)

LET関数を使用して書き換えた場合

「FIND(“c”, ”abcde”,1)」の部分をresultという名前で定義しておき、それをIF関数、ISERROR関数の中で使用しています。
こうすることで、FIND関数を一箇所にまとめることができます。

関数が複雑なとき

LET関数の使い所のふたつめは、関数が複雑なときです。

例えば、以下のような式があったとき、パッと見て何をしているかわかりますでしょうか。

=MID(B2,FIND("-",B2,1)+1,FIND("-",B2,FIND("-",B2,1)+1)-FIND("-",B2,1)-1)

パッと見 だと、MID関数が使われていることと、FIND関数が大量にあることくらいしかわからないのではないかと思います。
これは何をしているかというと、「AAA-BBB-CCC」のような文字列があったときに、「-」で囲われた部分(つまり、この場合は「BBB」の部分)を抜き出すための関数です。

「-」で囲われた文字列を抜き出す関数

では、これをLET関数を使って書き直してみます。

=LET(
  start,FIND("-",B2,1),
  end,FIND("-",B2,start+1),
  MID(B2,start+1,end-start-1)
)

「-」で囲われた文字列を抜き出す関数(LET関数)

だいぶ読みやすくなったのではないでしょうか。

startやendという名前をつけることで、それぞれの式がどういう目的で書かれているのかがわかりやすくなっていますし、FIND関数が重ねて使われている「FIND("-",B2,FIND("-",B2,1)+1)」の部分については、「end, FIND(“-”,B2,start+1)」とすることで、startを使ってendを算出しているという関係性がわかるようにもなっています。

このように、適切な名前をつけて、意味のある順序でnameやname_valueを定義していくことで、複雑な式も読みやすい形で書くことができるようになります。

使うにあたって注意点

最後にLET関数を使うにあたってのポイントを一点補足します。

LET関数を記載する際には、各引数の区切りがわかりやすいように、改行を適宜入れるようにしましょう。

おすすめは、以下のように、nameとname_valueのセットで1行、最後のcalculationで1行となるように改行を入れる方法です。

=LET(
  name1,name_value1,
  name2,name_value2,
  name3,name_value3,
  calculation
)

こうすることで、定義されているnameが左側に並んで見え、また、各name_valueがどこで切れているのかも判別しやすくなります。

おわりに

本記事では、ExcelのLET関数の使い方を解説いたしました。

従来、関数で複雑なことをしようとすると、どうしても後から読み返したときにわかりにくいものになってしまいがちでしたが、LET関数を使用することで、それが大幅に軽減できるようになりました。

自分自身で関数を書くときも、後から別の人が読む時も、わかりやすく書かれた関数というのは、余計なストレスにもならず、生産性の向上に直結すると思います。

ぜひ、LET関数を使いこなしてみてください。