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

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

あれ、なんか勘違いしていたかも。 =LET( _v1, 1, _v2, LET( _v1, _v1+2, _v2, _v1+3, _v2 ), _v2 ) も通った(結果は6)。

2020-03-20 19:10:23
風柳 @furyutei

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

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

例えば、JavaScriptで次のコードはエラーが発生する。 console.log((()=>{ const _v1 = 1, _v2 = (()=>{ const _v1 = _v1+2, // Uncaught ReferenceError: Cannot access '_v1' before initialization _v2 = _v1+3; return _v2; })(); return _v2; })());

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

Excel の #LET関数 では単純に =LET( _v1, ERROR.TYPE(_v1), _v1 ) としたとき、5(#NAME?) support.microsoft.com/en-us/office/e… が返ることからも、値の処理中にはまだ名前は有効となっていないことがわかる。

2020-03-21 10:55:54
風柳 @furyutei

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

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

念のため、↑のツイート twitter.com/furyutei/statu… の > 親と同じ名前は定義できない は勘違いでした。 - 親と同じ名前が定義されるまでは、親の値を参照可能 - 親と同じ名前を定義すると、以降はそのスコープ(LET)内では子の名前が優先される という挙動となります。 #LET関数

2020-03-21 11:12:34
💻佐藤嘉浩(Officeの魔法使い) @yosatonet

LET関数が使えるようにしたので早速遊んでみました。 =LET(列番号,SEQUENCE(1,3),一列目,SEQUENCE(10),二列目,INT(RANDARRAY(10)*3),三列目,VLOOKUP(二列目,E1:F3,2,FALSE),CHOOSE(列番号,一列目,二列目,三列目)) pic.twitter.com/PylzSb3ghE

2020-03-21 10:52:41
拡大
💻佐藤嘉浩(Officeの魔法使い) @yosatonet

三列目、RANK関数にするとこうなっちゃう。 範囲の大きさが判断できなくなる? 別セルに次の計算式を入れればちゃんと出る。 =RANK(B1:B10,B1:B10,0) =LET(列番号,SEQUENCE(1,3),一列目,SEQUENCE(10),二列目,INT(RANDARRAY(10)*3),三列目,RANK(二列目,二列目,0),CHOOSE(列番号,一列目,二列目,三列目)) pic.twitter.com/fsVlNa1Ypm

2020-03-21 11:01:17
拡大
💻佐藤嘉浩(Officeの魔法使い) @yosatonet

@furyutei RANK関数は配列受け付けないからほかの関数でなんとかしてみるなどした。 なんでSMALL関数ができるのか不思議。 =LET(列番号,SEQUENCE(1,4),一列目,SEQUENCE(10),二列目,RANDARRAY(10),三列目,SMALL(二列目,一列目),順位,MATCH(二列目,三列目,0),CHOOSE(列番号,一列目,二列目,三列目,順位)) pic.twitter.com/JOWqFGvymg

2020-03-21 13:28:35
拡大
💻佐藤嘉浩(Officeの魔法使い) @yosatonet

RANK関数はこれすらできない。 =LET(配列,SEQUENCE(5),RANK(1,配列))

2020-03-21 11:12:33
風柳 @furyutei

@yosatonet RANKやRANK.EQの第2引数はセル参照しか受け付けないようですね。 例えば =RANK(2,{1;2;3}) を確定しようとするとエラーになります。 support.office.com/ja-jp/article/… では配列もいけそうな書き方がされていますが、ドキュメントの方が誤っている可能性大。 stackoverflow.com/questions/5937…

2020-03-21 11:46:45
💻佐藤嘉浩(Officeの魔法使い) @yosatonet

LET関数は今のところVBAのWorksheetFunctionで使えないけど、使う意味もないか。

2020-03-21 16:34:58
ちゅん🐤 @KotorinChunChun

#LET関数 で遊んだあとで元のExcelに戻ると、セル参照の意味が分からなくて、すごく難易度が高く見える。 いや、今までがおかしかったんや。 従来の名前定義では無理だった ・相対参照による参照先の動的な変更 が出来るようになったのは大きい。 テーブルの構造化参照でも「同一行」が限界だった。

2020-03-22 11:34:47
ちゅん🐤 @KotorinChunChun

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

2020-03-22 11:43:33
拡大
ちゅん🐤 @KotorinChunChun

#LET関数 説明不足だったので補足 テーブルの構造化参照では、式をテーブル外に持ち出すと参照の修正が必要だった。 相対参照に名前を付けておけば、テーブルの外に持ち出してもそのまま使える。 「真左のセル」を入力値として使用する数式として、どこにコピーしてもそのまま使えることになる。

2020-03-22 11:49:40

今後もハッシュタグ #LET関数 で呟きますので、よろしくおねがいします。

LET関数が一般ユーザーの手に届くのは、2020年後半とのことです。

もうしばらくは使うことが出来ませんのでご注意ください。

宣伝

ちゅん🐤 @KotorinChunChun

いつでも どこでも えくせるちゅんちゅん。 おはよう から おやすみ まで #Excel #VBA #PowerApps #Notion と遊んだ日々の思い出を呟きます。好きな関数は #TEXTJOIN関数#UNIQUE関数

excel-chunchun.com

ブログでこんなの書いたりしてます。

リンク えくせるちゅんちゅん Excel関数で文字列処理を行う数式集 - えくせるちゅんちゅん エクセル関数で文字列を自由自在に変換するための数式を大公開します。(随時更新) 載せて欲しい式や、バグ等があればコソッと教えてください。 はじめに 自力で数式を解読したい人へ 文字列処理(文字数で判断) sの先頭からn文字取り出す sの末尾からn文字取り出す sの先頭からn文字取り除く sの末尾からn文字取り除く 文字列処理(区切り文字で判断) sにfが存在するか判定する sの先頭から最初のfまで取り出す sの先頭から最初のfの前まで取り出す sの先頭から二番目のfの前まで取り出す sの末尾から最初のfま

たまに変なExcelアドイン作ってます。

ちゅん🐤 @KotorinChunChun

_人人人人人人人人人人人人_ > セル結合禁止アドイン < が完成しました  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ ~快適なExcel生活のためには手段を選んでいられません~ なんと、セルの結合を解除するための支援ツールを内蔵! もう二度とセル結合に苦しめられることはありません! pic.twitter.com/wQc30xOgdj

2020-02-15 22:05:26

Excelクイズ に参加してます。

ちゅん🐤 @KotorinChunChun

#Excelクイズ 1~10の乱数を重複しないように発生させる式を作成しなさい。 一般人はA2にA1と異なる乱数を発生させる式を。 上級者はA1~A10に1~10が1回づつ発生させる式を。 尚、後者は私も未完成なので、実現できる保証はありません。 pic.twitter.com/vcfMe0FYCn

2020-03-07 01:19:04
拡大
前へ 1 ・・ 5 6 次へ