昨日発生していたサイトログインできない不具合は修正されております(詳細はこちら)

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

2020/3/18 ExcelにLET関数という「数式内で変数を定義する関数」が追加されるらしいので使い方を調査するとともに、関連ツイートを収集しました。
155
前へ 1 ・・ 4 5 7 次へ
ちゅん🐤 @KotorinChunChun

.@domtrop0083 > LET(x,y,y,1,x+y) これはどうなるんやろう。 前の引数の名前を使うと #NAME! になりました。 `=LET(x,1,y,x+x,y)` のような事は可能でした。 togetter.com/li/1482947#c75… 「Excelに変数を定義できるLET関数が追加されるらしいぞ」togetter.com/li/1482947 にコメントしました。

2020-03-19 20:37:53
Taichi AOKI @aoki_taichi

Excelの生産性を高める新関数LET()が登場 #マイナビニュース news.mynavi.jp/article/202003… おお。。。補助列がいらなくなったり、数学や物理の公式をよりそれらしく記述できるようになるのはよいけど、 1.名前定義と衝突した場合は? 2.LET内で先に定義した変数は後半の変数定義に使える? など疑問が。

2020-03-19 20:38:13
ちゅん🐤 @KotorinChunChun

@aoki_taichi 1.LETの名前が優先される。  ただし、式入力中では名前定義の参照先セルに色がついて誤解しそうになる。 2.LET内で先に定義した変数は後半の変数定義に使える。  逆に前に使おうとすると #NAME!。 自身で使おうとした場合も #NAME!

2020-03-19 20:43:34
Taichi AOKI @aoki_taichi

@KotorinChunChun ありがとうございます! 2は嬉しいですね。 1はハマりそうで嫌だな。こっちも#NAMEにした方がよかっだと思う。。。 (関係ないけど、xlookupも検索キーの列に重複があったらエラー出すようにしてくれた方がハマりを減らせて良かったと思う)

2020-03-19 20:50:22
ちゅん🐤 @KotorinChunChun

@aoki_taichi 1はローカル変数だと思えば、一般的な言語と同じだから自然な仕様だと思う。(マークの問題は要改善) そもそもバッティングすることは、まず考えられないけれど・・。 #NAME!を出してしまうと今度はどの名前がバッティングしてるんだ?とハマりそうw XLOOKUPのは言えてるけど、そこはFILTERで。

2020-03-19 20:54:14
ちゅん🐤 @KotorinChunChun

LET関数で定義した名前は、入力候補にリアルタイムに反映される。この仕組は凄い。 また、表示されるアイコンは「名前定義」と同じアイコン。 やはりLET関数は「ローカル名前定義」と考えるのが良さそう。

2020-03-19 20:49:34
ちゅん🐤 @KotorinChunChun

以下のようなLET関数の式を、数式の検証で分析しようとするとExcelがクラッシュするんですが? フィードバックやな。 =LET(x,1,y,2,x+y)

2020-03-19 20:46:00
ちゅん🐤 @KotorinChunChun

#LET関数 で使うローカル変数名の先頭には、アンダースコアを付けるというローカルルールを定めたほうが良いかも。 v1 v2 v3 は _v1 _v2 _v3 みたいに。

2020-03-20 01:26:52
ちゅん🐤 @KotorinChunChun

#LET関数 で使う名前、セルアドレスと一致したらエラーになるので、短い名前が使えず地味に厄介だな。 敢えての全角文字で名前付けたほうが便利かも。 つまり、何が言いたいかと言うと、日本人大勝利\(^o^)/

2020-03-20 01:23:31
ちゅん🐤 @KotorinChunChun

Insider版で作ったエクセルブックを、LET関数が使えないバージョンのエクセルで、開いたらこうなりました。 関数名の前には _xlfn. が付与されますが、 変数名の前には _xlpm. が付与されるみたいです。 pic.twitter.com/dCiLObmKok

2020-03-20 00:45:49
拡大
ちゅん🐤 @KotorinChunChun

てか、2003 にしたのに、なんでLET関数使えないんだ? 先月の検証では、アプデした後2回Excelを再起動するとようやく新関数が使えるようになるという検証結果だったが、今回はダメそうだぞ? pic.twitter.com/7oaCVan0aH

2020-03-20 00:48:32
拡大
ちゅん🐤 @KotorinChunChun

可能性としては、しばらくWindowsの更新がされていないということか。更新してみよう。

2020-03-20 00:49:36
ちゅん🐤 @KotorinChunChun

Windowsを更新したが、やはり使えず。 一応Excelのアップデートを再実行したら、何故か再びアプデが降りてきた。 すると、バージョン2004になった。 そしてLET関数が使えるようになった\(^o^)/ 2004からだったか。 pic.twitter.com/CGuda8sZFU

2020-03-20 01:00:32
拡大
VBA100本ノックとエクセル問題 @yamaoka_ss

@KotorinChunChun 同じようなパターンかもしれないけど、乱数使う時に乱数を固定できるとかはどうでしょう。

2020-03-20 02:36:35
ちゅん🐤 @KotorinChunChun

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

2020-03-20 02:18:19
拡大
はけた@できるExcel2021 @excelspeedup

@KotorinChunChun 4つ目のパターンでindex関数が要らなくなるのは不思議です。

2020-03-20 09:18:43
ちゅん🐤 @KotorinChunChun

@excelspeedup 従来の数式の結果が配列の先頭になってしまった原因は、出力型が「単独値」と明示されてたからなんですよね。 ・従来のセルの場合は、既定が単独値でした。 ・スピルが導入されて、既定が配列に変更されました。(@で従来の単独値モード) ・ #LET関数 の変数も配列は代入可能なので、既定は配列です。

2020-03-20 09:38:25
ちゅん🐤 @KotorinChunChun

完全にプログラミングっぽくなってるね。 手続き型のように、上から順番に読んで行くだけなので簡単。 これインデントされてるから読みやすいだけで、ダラダラと書かれたら意味不明だからね。 #LET関数 は、ちゃんとインデントして書ける人にしか使わせちゃいけないw 数式エディタの強化を求めたい twitter.com/KotorinChunChu…

2020-03-20 12:13:20
ちゅん🐥えくせるちゅんちゅん @KotorinChunChun

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

2020-03-20 12:08:58
ちゅん🐤 @KotorinChunChun

#LET関数 が一般に広まったら、これまでに作った数式を全部見直したほうが良い気がする。 特に長い引数を持つ関数は分解しないと読みづらいので、VLOOKUP とか IF の入れ子は要修正かも

2020-03-20 12:23:30
風柳 @furyutei

名前の再定義が出来ないのが、ちょっと不便かな。 =LET( _a, 1, _a, _a+1, _a ) はエラーになる。

2020-03-20 07:56:47
風柳 @furyutei

LET関数は入れ子にも対応していた。 gist.github.com/furyutei/be05c… ただし、親と同じ名前は定義できない(参照は可)。

2020-03-20 12:22:13
風柳 @furyutei

#LET関数 - 名前はその位置に来るまでは未定義状態 - 名前のスコープはLET()内 となっている模様。 よって、 =LET( _v1, 1, _v2, LET( _v3, _v1+2, _v3 ), _v3, _v2+3, _v3 ) この式(_v3が内外どちらでも定義されている)は大丈夫みたい。

2020-03-20 18:50:58
風柳 @furyutei

#LET関数 の名前はJavaScriptのconstと似た挙動だが、微妙に仕様が異なる。 LET関数の名前は値が確定した時点で初めてそのスコープ内で有効となる一方、JavaScriptのconstはスコープに入った直後に『存在するが初期化されていない』状態となるため、親スコープの同一名の変数にはアクセス不可となる。

2020-03-21 02:40:31
風柳 @furyutei

#LET関数 - 名前はその位置に来るまでは未定義状態 - 名前のスコープはLET()内 となっている模様。 よって、 =LET( _v1, 1, _v2, LET( _v3, _v1+2, _v3 ), _v3, _v2+3, _v3 ) この式(_v3が内外どちらでも定義されている)は大丈夫みたい。

2020-03-20 18:50:58
前へ 1 ・・ 4 5 7 次へ