Excelに変数を定義できるLET関数が追加されるらしいぞ

2020/3/18 ExcelにLET関数という「数式内で変数を定義する関数」が追加されるらしいので使い方を調査するとともに、関連ツイートを収集しました。
133

関連記事

リンク TECHCOMMUNITY.MICROSOFT.COM Announcing LET Have you ever had to repeat the same expression multiple times within a formula, created a mega formula or wished that you had a way to reuse portions of your formula for easier consumption? With the addition of the LET function, now you can! Introducing 7
  • Microsoft 公式ブログで 米国時間 2020年3月18日 Excelの新関数「LET()」発表
  • 可読性とパフォーマンスを高めたとのこと
  • 既にOffice InsiderのInsiderチャネルで利用可能
  • 正式リリースは2020年後半の予定

LET関数とは・・・

リンク support.office.com LET 関数 LET関数は、計算結果に名前を割り当てます。 これにより、1つの数式内で中間計算、値、または名前を定義できます。 これらの名前は、LET 関数のスコープ内にのみ適用されます。 プログラミングの変数に似ていますが、Excel のネイティブ式構文を使って実現します。 4

"SUM (x, 1)" という単純な式 (x は値を割り当てることができる名前付きの変数) を検討してください (この場合、x には値5が割り当てられます)。
この数式をセルに入力すると、値6が返されます。
= LET (x, 5, SUM (x, 1))

セルの中でのみで有効な「名前定義」と同じ使い勝手でした。
プログラミングで言う再代入不可能なローカル変数という感じです。

LET関数という名称は、lisp や FileMaker などではお馴染みとのこと

LET関数の利用例

ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

例えば、下図のような数学の公式。 a,b,cをグローバルな名前定義をする必要がなくなったので、気軽にこう書ける。 数式で本当にやりたいことに集中できる。 #LET関数 pic.twitter.com/Ez76PKMeCt

2020-03-22 11:43:33
拡大
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

#LET関数 の利用例① 参照先のセルの記述が1回だけになることで、修正漏れをなくす事ができます。 pic.twitter.com/LjBRYjkuGn

2020-03-20 01:10:36
拡大
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

#LET関数 の利用例② 再帰的に関数を入れ子にし続けるような式では、その都度変数に代入することで、数式の ・可読性 ・修正 が容易になります。 ※Alt+Enterによる改行とインデント推奨 pic.twitter.com/exeGwOD0z5

2020-03-20 01:30:48
拡大
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

#LET関数 の利用例③ Microsoft Blogより 共通の数式を変数に格納することで1回にすることができます。 昨今の配列関数のように負荷をかけやすい関数を重複して記載する必要がなくなり、処理速度が向上します。 pic.twitter.com/Mq22EzeF3t

2020-03-20 01:57:43
拡大
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

#LET関数 の利用例④(修正版) Excelでひらがなとカタカナを変換する数式を作ってみた excel-chunchun.com/entry/hiragana… より 配列を維持するためのINDEXが不要となりました。 これにより、配列が解除されてしまう悩みのタネから開放されました。 pic.twitter.com/XxALPivan5

2020-03-20 09:32:53
拡大
リンク えくせるちゅんちゅん Excelでひらがなとカタカナを変換する数式を作ってみた - えくせるちゅんちゅん ネットで情報収集していたら、ふと「ひらがなをカタカナに変換したい。」という文字が見えた。 最近、文字列処理の関数ばかり見ていた私はCONCATを使えば出来るとピンと来たため、お盆休み最後の全ての予定を放り投げて早速作ってみることにした。 3 users
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun

#LET関数 の利用例④(汎用化バージョン) ひらがなとカタカナの双方向変換が出来るようにしてみた。 pic.twitter.com/4U5etPjHAG

2020-03-20 12:08:58
拡大

はてブのコメントで頂いた利用例(2020/3/19 21:00追記)

sgo2 vlookupの結果から別のvlookupの結果で得た文字数を削るとかいう良くあるパターンがこう書ける

let(
a,vlookup(省略),
b,vlookup(省略),
mid(a,b,len(a)-b)
)
やましー@データ活用クラウドエンジニア&プログラミング @yamashi18041

Excel for O365でLET関数が実装されたようですね 一つの関数内で変数のように置き換えができます シート名取得 =RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))) ↓ =LET(fn, CELL("filename",A1), RIGHT(fn,LEN(fn)-FIND("]",fn))) support.office.com/ja-jp/article/…

2020-03-19 20:52:32
中村智大@iCARE @tomo_icare

と言いながら、LET関数のユースケースを考えてみた。 vlookupとかIFの処理量の多い関数を反復して使う場合には、一度定義することで計算が省略されて早くなる。 データ量が多くなる場合には有効やな。 =If(vlookup(A)>10000,vlookup(A)*0.9, vlookup(A)) ↓ =let(a,vlookup(A),if(a>10000,a*0.9,a)) twitter.com/tomo_icare/sta…

2020-03-19 23:16:16
風柳 @furyutei

LET関数を使って、擬似的なSPLIT関数を作ってみた。 予想通り便利だ、LET関数…! 数式内にHELPも書けるぞ…← #Excel pic.twitter.com/RY14nQU9YA

2020-03-20 07:56:46
拡大

まとめ

  • 同一のセル参照を2回書く必要がなくなった
  • 同一の数式を2回書く必要がなくなった
  • 数式のネストが不要となり可読性が格段に向上した
  • 数式の戻り値を配列に強制することが容易となった
  • (非公式運用だが)数式にコメントを入れるのが簡単になった

その他の反応

しょうた⭐️Excel改造で業務効率化するが会社に理解されない経理マン @shota_Excellent

なんか難しくて、いまひとつ使いどころがわからない。 Excelの生産性を高める新関数LET()が登場 #SmartNews news.mynavi.jp/article/202003…

2020-03-18 18:48:49
エクセルの神髄 @yamaoka_ss

「Excelの生産性を高める新関数LET()が登場」 news.mynavi.jp/article/202003…

2020-03-18 19:12:29
残りを読む(129)

コメント

makoto suzuki @mako0307 2020年3月18日
if文とかで同じ数式を2回出したりしなくて済むのか🤔
6
m232796 @m232796 2020年3月19日
変数って言うけどふつーのプログラミング言語的な変数ではないね。多くの言語でconstなにがしに相当するんじゃないかな。基本的には何度も出現する部分式に名前をつけてスッキリ(&高速化)させたり、部分式に名前をつけることで意味を明瞭にする、以上の物ではないように思える。文字数限界や可読性限界や速度限界なら緩和されるが、今まで1セルでは構造上不可能な計算ができるとかでは無いんじゃない?
3
m232796 @m232796 2020年3月19日
複数定義時には先行定義名も使えるようだし、再定義もできるなら部分的にはふつーのプログラミング言語に似た書き方はできるかもだが・・・・・・ループ(再帰)があれば関数型言語として化けるかもだがコレだけだとちょっと・・・・・・書きやすく、読みやすいなら生産性が上がることは間違いないんだが。裏を返せば生産性が低くて良いなら前から出来た可能性がなぁ・・・・・・
0
Corriedal @C0rriedal 2020年3月19日
ファイル名とかタブ名とか引っ張り出すのすげー長くなりがちだしこういうの助かる
3
yuki🌾㊗️5さい🎉⚔ @yuki_obana 2020年3月19日
リスト間同士の操作のほうがええなぁ〜(´・ω・`)定義できるのかなぁ? =LET([xi],[cxi],[yi],[cyi],f1(xi,yi,f2)) みたいなの
0
シナモン @cinnamonP 2020年3月19日
logとか三角関数とかも使えるのかな…?あとは$AB$23みたいな参照を一文字で置き換えられる、とか?使ったら便利かも知れない
0
ねや @AriaSub 2020年3月19日
一番使うのはこのパターンかな =IF(ISNA(VLOOKUP(A1,B:C,FALSE,2)),0,VLOOKUP(A1,B:C,FALSE,2)) ↓ =LET(v,VLOOKUP(A1,B:C,FALSE,2),IF(ISNA(v),0,v))
10
Earwax @Earwax97409510 2020年3月19日
LET関数に特化したインスペクション機能が付けば化けそう。でなければ今まで通り複数セル使った方が計算途中の黙視確認ができて便利だからこれは使わんな。
2
ねや @AriaSub 2020年3月19日
yuki_obana 求めてる物と同じかは分かりませんが、 リストにたいして式を掛けたいなら数式確定時にCtrl+Shift+Enterで配列数式に変換できますよ。 map,reduceのつもりだったらごめんなさい
0
nnouse @nnouse 2020年3月19日
数式の入れ子が見やすくなるんだろうけど、結局作業列つかったほうがメンテナンスはラクぽい
6
marumushi @marumushi2 2020年3月19日
代入演算子がカンマだとアセンブラ感あるな
1
あごにー @Agony_01 2020年3月19日
作業列でもいいんだが、作業列に数字放り込むとその度に再描画が走るんで、処理速度は格段に速くなりそうだ。
8
あごにー @Agony_01 2020年3月19日
何より、何をやっているのかっていうのを変数名で表記できるのがいいね。 このセルはなんだっていうのをいちいち見に行かなくて済むのはすごく助かる。
5
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun 2020年3月19日
Agony_01 たぶん、ターゲットは最近増えた配列関数だと思うんですよね。 配列を返す式は作業列では対処しきれないので、必要だと判断されたのでしょう。
3
aki @Yy7_f 2020年3月19日
AriaSub 実はそれIFNAやIFERRORでカバーできる
5
aki @Yy7_f 2020年3月19日
csvを開くと全体的に再計算することとか、勝手に肩を変換することとか気になるところたくさんあるのよね…
0
a7R2Lj @a7R2Ljtm 2020年3月19日
Yy7_f 知らなかった。早速書き換えよう。
0
佐渡災炎 @sadscient 2020年3月19日
Excelのセル埋め込み関数でちょっと凝ったことしたくなったら、在りもので使えるの探すよりVBAでPublic Function書いた方が早くて使いやすいのが作れる。
0
あごにー @Agony_01 2020年3月19日
Yy7_f CSVはCSVリーダーで運用した方が効率ええぞ・・・エクセルでCSVが見れたり編集できたりするのはおまけ機能ぐらいでしかないと心得ておいた方がよいゾ・・・
1
xi @accountLINKonly 2020年3月19日
Yy7_f せめてAccess使ってクレメンス
2
あごにー @Agony_01 2020年3月19日
もっとも、ちょっとめんどくさいことやりたいと思ったらVBA解禁した方が読みやすいしわかりやすいという話なんだが・・・セキュリティでNGしてる職場も多いから困りもんじゃの。
0
月5000兆円稼ぐプログラマ @Kuma_Kuma1984 2020年3月19日
中小の予実管理で未だにExcelバリバリ使ってるところ多いだろうし、そういう会社に務めてるときは「変数欲しいなー」と思ってたので良い機能(かもしれない)。VBAはなるべく書きたくないし。
0
hatiya @hatiya14 2020年3月19日
Yy7_f ますますLET関数の存在意義が…
0
ビッター @domtrop0083 2020年3月19日
LET(x,y,y,1,x+y) これはどうなるんやろう。
0
ハラタイラ @harataira0301 2020年3月19日
あたまのおかしい技術者のおもちゃにされる未来が見える
0
ぽんこれ @ponkore 2020年3月19日
ほう。めちゃ複雑な式をそれなりに変数に代入するようにしたら読みやすくなるかも。
0
さく @sakuro 2020年3月19日
HaskelとかLispみたいな
1
KLEIN @klein_artifact 2020年3月19日
これを使う人は仕様書を残さず、保守できなくなった段階で担当者が地獄を見る(壊れる)まででワンセット。
0
signal9.jp @Signal9J 2020年3月19日
正規表現などのUDFはExcel.DNAで作ったアドインを使ってるのだが、これがブックに引っ付けられるといいのだがなぁ。
0
goodmoon @goodmoon 2020年3月19日
xlookupもそうだけど、買い切り版をサポート期限いっぱいまで使う会社と付き合いがあると新機能はなかなか使えないんですよね
0
mikunitmr @mikunitmr 2020年3月19日
あーそーゆーことね、完全に理解した(わかってない)
1
ことりちゅん@えくせるちゅんちゅん @KotorinChunChun 2020年3月19日
domtrop0083 > LET(x,y,y,1,x+y) これはどうなるんやろう。 前の引数の名前を使うと #NAME! になりました。 `=LET(x,1,y,x+x,y)` のような事は可能でした。
0
m232796 @m232796 2020年3月23日
klein_artifact 式の一部に名前をつけて再利用可能にするってだけなので、よほど変な使い方しなければ部分式に名前がついて可読性が上がるとか重複が減って読みやすく修正もしやすくなる可能性のほうが遥かに高いと思うよ。
0
kisara @kisara50 2020年4月27日
m232796 ふつーってか手続き型でなく関数型ね。表計算ソフトはもともとインタプリタでビジュアルな関数型プログラム言語環境だから
0