Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 〜Excel数式が本格的なプログラミング言語に
■ このスレッドは過去ログ倉庫に格納されています
米Microsoftは2月8日(現地時間)、「Excel」の新しい関数「LAMBDA」(ラムダ)とそのヘルパー関数の一般提供を発表した。「Microsoft 365」の最新チャネルで配信中の「Excel」ビルドで利用できる。 ・Windows版:16.0.14729.20260 ・Mac版:16.56(Build 21121100) ・iOS版:2.56(Build 21120700) ・Android版:16.0.14729.20176 「LAMBDA」関数を利用すると、「Excel」の関数で新しい関数を作り出すことが可能。
ユーザーが独自のカスタム関数を定義し(「LET」関数を組み合わせれば名前も付けられる)、ワークブックで再利用することができるので、冗長な繰り返し表現が排除されて数式の見通しがよくなるほか、無用な入力ミスを防止できる。
また、これまで「Excel」の数式だけは記述できなかった動的なループ処理を記述できるようになるのもメリット。
従来の「Excel」で同様のことを実現しようとすると、どうしてもVBA(Visual Basic for Applications)の知識が必要となっていたが、それが不要となる。
http://imgur.com/qp1SVD9.jpg
https://news.yahoo.co.jp/articles/564cd1995caff4d7a3a86040718a39f1dca76d6a&preview=auto つまりエクセル内で自作関数が作れるようになったってことか? >>7
関数をパラメータに取る関数が書けるということ その関数定義はどこでやるの?毎度の狭い一行入力バーの中でやるの? vbaよく知らない関数派のワイの大勝利って事でええんか? >>12
普通にセルでLAMBDA式を作ってそれを名前の定義にコピペするだけだよ >>9
>関数をパラメータに取る関数が書けるということ
今までもできね???
=if( sum(A:A) == 1 , 0 , 1 ) >>20
セルの式の中でインデントとか改行とかできるの? >>14
>>19
俺も関数派でVBAサッパリだわ
LAMBDAはベータチャネルから使ってたけど再起処理便利だな >>22
sum(A:A) == 1は、関数ではなく真偽値 VBAの動的計画法のプログラムあるけど、ラムダで実装できんのかな
計算速度気になる 実際この関数、何に使うのよ
具体例を示してほしいのよ >>28
仕事辞めた後、引き継いだ他の奴らの阿鼻叫喚を想像してニヤニヤする プログラマーってlamdaとか関数言語的なやり方好きな人多いからな 要は別のセルで組んだ関数を呼び出せるってことでしょ? >>25
なるほど。こういうのは?
=VLOOKUP(C25,INDEX(C17:H22,VLOOKUP(C25,J17:K22,2,FALSE),0),VLOOKUP(D25,M17:N22,2,FALSE)+1,FALSE) >>35
オブジェクト使うにはさすがにVBA必要だけどオブジェクト無しならワークシート関数だけで出来るようになったよって事かな
俺もあんまよくわかってないが 再帰が出来るようになってチューリング完全だよっていうの見た A1 AAA-あああ-123-XYZ
A2 3
A3 123
A1からA2番目の値を取り出したい場合
A3の式が↓
=LAMBDA(A,B,IF(B=1,IFERROR(MID(A,1,FIND("-",A)-1),A),SPLIT2(MID(A,FIND("-",A)+1,LEN(A)),B-1)))(A1,A2)
となる
SWITCHやIFSでもいいけど-が多くなればなるほど再帰を使った方が良い 古いバージョンで読み込めなくて発狂するところまで読めた LET関数は、独自の名前を定義して使うこともできますが、必須ではありません。どちらかといえば、セル内の数式として使う機会が多いはずです。またLET関数は「LET関数を使わないとできない」という話ではなく、LET関数を使うと記述が短くなって読みやすくなるというのが効能です。一方のLAMBDA関数は、セル内に直接記述するのは意味がありません。必ず名前定義と一緒に使います。そして、LAMBDA関数の特徴である"再帰"を使えば、今までのワークシート関数だけではできなかった処理も可能になります。どう考えても、両者の難易度は「LET <<<<<<< LAMBDA」です。何しろ、LAMBDA関数でやっている数式を調べるには[名前の管理]ダイアログボックスを表示しなければなりません。したがって、その前に、そもそもExcelには"名前定義"という機能があると、それを知っていなければなりません。今まで、多くのExcelユーザーに聞いてきましたが、この"名前定義"機能をご存じない方は意外と多いです。そして、ご存じない方の数は、年々増えているように感じます。よしんば[名前の管理]ダイアログボックスでLAMBDA関数の実体を見つけたとしましょう。しかし、そこには超絶難解な"再帰"が待っています。まさに、ダンジョンのラスボス的な存在です。"たびびとのふく"と"こんぼう"しか装備していないレベル1の勇者なんて瞬殺されます。それくらいの強敵です。
LAMBDA関数は確かにすごいです。でも、すべてのExcelユーザーに必須の関数ではありません。別に、使わなくても、幸せなExcelライフを過ごせます。こんな、上級者向けの難しいものに挑むより、まずはExcelの基礎を学んでください。 =BYROW(A1:A10,LAMBDA(a,SUM(a)))
↑スピル出来なかったSUM関数をスピル化した式
名前の管理を使う必要無し 最初からSUMがLAMBDAでラップされていれば
=BYROW(A1:A10,SUM)と書けたのに >>37
オブジェクトも名前の管理にindirect入れてvlookupみたいにできるよ
検索して出るサイトには書いてないけど最後に呼び出したものを
表示する用のオブジェクトをドロップする時なぜか
Ctrl+vじゃなくて右クリックから貼りけないと動かないのと
最初にオプションでファイル内の画像を圧縮しないにチェックしないと
使うたびに画像が劣化するので注意 ■ このスレッドは過去ログ倉庫に格納されています