
Excelの新関数"LAMBDA"、一般提供開始へ 59
ストーリー by nagazou
開始 部門より
開始 部門より
過去記事でも取り上げたExcelの数式言語の新関数「LAMBDA」が、2月8日から一般提供が行われ㑍テイルという。LAMBDA関数を利用すると、Excel上の関数で新たな関数を作り出せる。新たに配布されたLAMBDAとそのヘルパー関数に関しては、「Microsoft 365」の最新チャネルで配信中の「Excel」ビルドで利用できるとしている(Microsoftブログ、窓の杜)。
便利な反面、これまで以上に難読化が進む…… (スコア:2)
Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
記述箇所バラバラで、ひたすら長い数式に複雑に飛びまくる参照、そして、LAMBDAはその複雑な数式を隠蔽してしまうと思われる。
こういうのを活用して複雑なことをやろうとすればするほど、作成者以外には理解不能なシートが生まれるんじゃないかと思う。
使いこなせればとても便利なのは間違いないんだけど、保守性にはめちゃくちゃ気を使う必要がありそう。
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
Excelで関数を定義できる、というのは正に可読性・保守性を上げるためのものだけどね。これまで同じロジックを何百ものセルにコピペすることがどんだけ多かったことか。そして一部の修正漏れでバグが発生することがどんなに多かったことか・・・
Re: (スコア:0)
せっかく関数定義して保守しやすいようにしたはずなのに
昔からの習慣が抜けない人に保守されたばかりに関数定義があちこちにコピペされるカオスに
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
で、 Advanced formula environment [microsoft.com] ってのが出てきたんだな。
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
記述箇所バラバラで
このLAMBDA関数に関しては、そうはならないよ。
名前付き関数としては、「名前の定義」で定義される。
名前なし関数としては、LET関数と組み合わせてそのセルの中でしか使われない。
# 一度くらい使ってみてた?
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
ファイルごとシートごとに記述を確認しなくても良いという仕組みが提供されているのでしょうか?
ざっと使った限り、そんな機能はありません。
シート毎に確認する必要があります。
しかし、それがどれほどの問題になるでしょうか?
関数定義のオーバーライド可能な言語はいくらでもあるわけで、それら言語と大差ないでしょう。
定義が複数ファイルに渡っていれば、このLAMBDA関数より難しい場合だってある。
IDEのサポートがあれば、このLAMBDA関数より簡単ですが、
Excelにしたって、「名前の定義」一ヶ所を確認するだけですね。
Re: (スコア:0)
Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
記述箇所バラバラで、ひたすら長い数式に複雑に飛びまくる参照、そして、LAMBDAはその複雑な数式を隠蔽してしまうと思われる。
そういたしますと
使用している関数を別シートに列挙するマクロを入れまして隣の列にはコメントを書けるように致しましょう
その書式は互換性のために先頭に#を入れる書式にしておきましょう
そうして更にそのシートから関数を呼び出せるように関数はを使うときはINDIRECTで書くルールにしましょうか
こういう感じになるんですね
# このExcel作ったやつを出せやっ!的未来
Re: (スコア:0)
1文字1セルのシートを作って、BASIC で記述しよう
#コメントはREMまたはシングルクォーテーションから開始
Re: (スコア:0)
マクロは大嫌いだけど、ワークシートの式の方って過去資産を保守するケースってそれほどあるものかね?
なんか出力結果おかしいんだけど式がわけわからん、今の捨てて書き直そうで済まないかしら。
セル式の場合共通関数とかは原則使えないから影響範囲が限定されるかなと。
Re: (スコア:0)
セル式の場合共通関数とかは原則使えない
共通関数を作れるようにしようというのがLAMBDA関数 [microsoft.com]なんですわ。
Re: (スコア:0)
> Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
昔、バイト先のおじさんが同じようなことを言ってました
Excelは良くない。昔はExcelなんて無かった。ソロバンがいちばん便利だ、と。
Re: (スコア:0)
Excelって保守も作者以外が理解する必要もなく、何か変えたい・やりたいときには一から作り直すものだと考えてます。
そこを割り切ればExcelも悪くない。
Re: (スコア:0)
Excelに限らず…
単純な記述でできないことはやらない
という自制が働かないのはなんでなのか…
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
単純に記述することが、本質的に不可能なことがあるから、ではなかろうか。
Re: (スコア:0)
そうしないとIT利権で金取れないからね。
これなんぞ? (スコア:1)
行われ㑍テイルという。
Re: (スコア:0)
namda式
Re: (スコア:0)
なんの誤植か気になって、行われ㑍テイルでググったらこのページ自身がトップに来てしまうという・・・。
ランバダ? (スコア:0)
ダンスする関数だな?
Re: (スコア:0)
Re: (スコア:0)
Excel使用者のイメージを読み取り、物理的なエネルギーに変換する機構では?
使用者が限られるのが難点だが。
# SFネタは色々ありそう
Re: (スコア:0)
お薬を飲めば一般人でも使えるで
Re: (スコア:0)
なにそのワンダバの親戚みたいの
# もしかして一般人は「λかわいいよλ」しないのだろうか…
Re: (スコア:0)
ダンスする関数だな?
ええ融通の聞く関数ですのでハードラックとダンスっちまいがちなんですよ
Re: (スコア:0)
明記はしてないけど「ラムダ」と読むっぽい。
https://support.microsoft.com/ja-jp/office/lambda-%E9%96%A2%E6%95%B0-b... [microsoft.com]
Re:ランバダ? (スコア:3, 参考になる)
まあ知ってる人には常識なんですが、知らない人は知らないですよね。
計算機科学にラムダ計算 [wikipedia.org]という論理体系がありまして、
ラムダ計算では、ラムダ式と呼ぶ表現形式で関数を記述します。
たとえば、x,yを入力とし、x+yを返す関数は、よくある手続き型言語では
みたいに記述しますが、ラムダ式では、
と書きます。関数型言語だとラムダ式の形で関数を表現するのはよくあって、LISPなら
と書いたりしますが、今回のEXCELのLAMBDA関数だと、
になる。
今回のExcelのLAMBDA関数は、文字通りまさに「ラムダ式の形式で関数を定義する」関数になってるわけです。
Re: (スコア:0)
まあ普通にギリシャ文字Λの英語綴りだからね…
Re: (スコア:0)
コリン・ウィルスンの宇宙バンパイヤの翻訳でランブダと訳したヤツがいる。
Re: (スコア:0)
Re: (スコア:0)
あっさり抱き込まれてるんじゃねーよ。ヒトだぞヒト。しかも、ちょっとうなだれてるやつな。当然、作業者を意味する。
Re: (スコア:0)
あっさり抱き込まれてるんじゃねーよ。ヒトだぞヒト。しかも、ちょっとうなだれてるやつな。当然、作業者を意味する。
λxy x+y
xとy入りますのでxとy足してね
という覚え方でひとつ
Re: (スコア:0)
よう、おっさん。
(もちろん自分も)
Re: (スコア:0)
真面目な話、古くはランブダという読みがあったようです
Re: (スコア:0)
科特隊の出場音楽だよ
Re: (スコア:0)
科特隊出撃BGMはぱっと思いつかない。
ワンダバってウルトラ警備隊かと思っていたら、MATの出撃BGM [wikipedia.org]から一般化したらしい。
Re: (スコア:0)
なぜかサンダーバードと混同していたyo
Re: (スコア:0)
ナンちゃんではなく?
Re: (スコア:0)
マトンと違ってクセがあんまりないやつだろ?
Re: (スコア:0)
最近、アニメのリメイクが発表されたやつだろ?
Re: (スコア:0)
ああ石川さんね、石川さん
lispを使え (スコア:0)
そんなもん使って高級なプログラミングやる暇と能力があるならlispを使えばいいじゃん
#コモディティ化した商品は無意味に高性能化するさだめ
Re:lispを使え (スコア:1)
Excelは作る人と使う人が別々のこともままあるし、
数式を書く能力とプログラミングする能力は別だよね。
Excelからlispを呼び出せるようにしろとか書けるようにしろとかならまだ分かるけど、
それなら今回のLAMBDA関数でも充分実用範囲。
lisp環境構築する暇があるならLAMBDA使えとも言える。
そもそもマクロ(VBA)だのPowerQueryだのExcelから複雑な処理をする方法はすでに色々用意されていて、
LAMBDA関数はExcelで完結することがメリットなんだからその意見は的外れ。
Re:lispを使え (スコア:1)
普通にFORとかLOOP関数ないの? (スコア:0)
excelマクロは良く知らないけど、普通にFORとかLOOP関数ないの?
ループは再帰で書けってことなのかな?
だとすると、ものすごく遅くてメモリ食いそうな印象。
Re:普通にFORとかLOOP関数ないの? (スコア:1)
Excelのマクロは、VBA = Visual Basic for Applicationで記述するけど、当然ForもFor EachもDo While/Untilもある。
今回のLAMBDA関数は、マクロ(=VBA)の中から呼び出すものではなくて、ワークシート関数。
ループは再帰で書くんだろうけど、末尾再帰最適化くらいやってるんじゃね?
Re:普通にFORとかLOOP関数ないの? (スコア:1)
ループは再帰で書くんだろうけど、末尾再帰最適化くらいやってるんじゃね?
検証したところ、現状では末尾再帰最適化はやって無さそうです。
手元の環境では、5460段くらいでスタック溢れで「#NUM!」が表示されちゃうようです。
Re: (スコア:0)
そもそもforとかloopを使わずに済ます、使わずに済ませる気がする
Re: (スコア:0)
それは「よく知らない」ではなくて「まったく知らない」だな
Re: (スコア:0)
不通に表計算としては使うぞ。多少のマクロも。
ただループが必要な場面では、pythonとかVBAで回すから、forやloopが無いか調べたこともなかった。
Re: (スコア:0)
不通に表計算としては使うぞ。
バグっているのですね