はじめに
EXCELではすでにおなじみのLET関数がついにGoogleスプレッドシートにも実装された。
LET関数とは、式の途中結果を名前を付けて保存し、式の中で再利用することができる機能を持つ関数だ。
従来このような用途を実現するには、別のセルに途中までの結果をいったん保存し、本来結果を表示させたいセルからそれを参照するという方法がよく使われていた。
中間結果が複数個必要な場合には、複数のセルを一時保存用に割り当てることもよく見られた。
LET関数はこのような姑息な手段を使うことなく、標準の関数として途中結果の保存機能を提供したものだとも言える。
途中結果には日本語の名前を付けることも可能なので、式の可読性が飛躍的に向上する。
途中結果の一時保存用セルを使用するような長くて難解な式を作る必要は、もはやなくなったと言ってもよいだろう。
LET関数の仕様
LET関数の仕様は以下の通りだ。
LET(中間式の名前1,
中間
式1[, 中間
式の名前2, 中間
式2 ...], 結果の式)
中間式というのは途中の結果を求めるための式のことで、その名前と式の内容をペアで記述する仕組みとなっている。
この名前と式のペアは一つだけでも良いが、複数個設定することもできる。
最後に結果を求める式を記述し、この計算結果がLET関数の値となる。
仕様の説明は以上となるが、これだけではなかなか伝わりにくいと思われるので、以下に使用例を示そう。
LET関数の使用例
LET関数は途中結果に名前を付けて再利用することができるため、同じ中間式が何度も出てくるような長い式中で使うと効果的だ。
または途中結果をさらに別の計算に使いたい場合もあるだろう。
文字列から特定の条件で部分列を取り出すような式では、このような状況がしばしば発生する。
ここでは、文字列中のカンマとカンマの間の部分列を取り出すケースを考えてみよう。
セルに名前、住所、職業がカンマ区切りで記述された個人情報が設定されているとしよう。
この中から住所を取り出すような処理は、オフィス事務などの仕事をしていればしばしば発生するだろう。
山田三郎,北海道札幌市手稲区,会社員
ここから、LET関数を用いて住所だけを取り出してみよう。
例えば、以下のような式を書けばよいだろう。
=LET(
カンマ位置1, FIND(",", A1),
カンマ位置2, FIND(",", A1, カンマ位置1 + 1),
文字列長, カンマ位置2 - カンマ位置1 - 1,
MID(A1, カンマ位置1 + 1, 文字列長)
)
分かりやすくするために途中に改行を入れているが、もちろんこれはなくてもよい。
名前と中間式の組み合わせを3つ使っているがそれぞれ簡単に説明しよう。
最初の名前「カンマ位置1」では1つ目のカンマの位置を求めている。
上記のデータだと 5 になっているはずだ。
次の名前「カンマ位置2」では2つ目のカンマの位置を求めている。
この計算に「カンマ位置1」の値を利用しているという点に注目していただきたい。
LET関数ではこのような中間式の再利用が可能なのだ。
なお、上記のデータでは、「カンマ位置2」の値は 15 になっているはずだ。
最後の名前「文字列長」は、結果となる文字列の長さを計算する式の名前だ。
上記のデータでは 9 になっているだろう。
これらの中間式の結果を利用して、最後にMID関数で求める住所の文字列を取得している。
以下は、実際のスプレッドシート上で上記の計算を行った結果だ。
A1にデータを、A3に式を設定して結果を取り出している。
住所の部分が思惑通りに取得出来ていることが分かるだろう。
青い枠カーソルが値に重なっていて少し見にくくなっているのはご容赦いただきたい。
LET関数の使用例の紹介は以上だ。
まとめ
EXCELでは数年前から実装されているLET関数がGoogleスプレッドシートでも使えるようになったので早速試してみた。
LET関数は式の途中結果を再利用できる大変便利な仕組みだ。
本記事でその便利さが多少なりとも伝われば幸いだ。