アカウント名:
パスワード:
Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。 記述箇所バラバラで、ひたすら長い数式に複雑に飛びまくる参照、そして、LAMBDAはその複雑な数式を隠蔽してしまうと思われる。
こういうのを活用して複雑なことをやろうとすればするほど、作成者以外には理解不能なシートが生まれるんじゃないかと思う。
使いこなせればとても便利なのは間違いないんだけど、保守性にはめちゃくちゃ気を使う必要がありそう。
Excelで関数を定義できる、というのは正に可読性・保守性を上げるためのものだけどね。これまで同じロジックを何百ものセルにコピペすることがどんだけ多かったことか。そして一部の修正漏れでバグが発生することがどんなに多かったことか・・・
せっかく関数定義して保守しやすいようにしたはずなのに昔からの習慣が抜けない人に保守されたばかりに関数定義があちこちにコピペされるカオスに
で、 Advanced formula environment [microsoft.com] ってのが出てきたんだな。
記述箇所バラバラで
このLAMBDA関数に関しては、そうはならないよ。名前付き関数としては、「名前の定義」で定義される。名前なし関数としては、LET関数と組み合わせてそのセルの中でしか使われない。# 一度くらい使ってみてた?
よくわからないし、O365を買っていないので教えてください。
「名前の定義」ということはブックかシートごとに管理ということなのでしょうが、シートごとの場合はシートごとに数式の定義が異なる可能性があり、ブックの場合はシートのコピー等で名前重複を避けるために名称が変更されている可能性がありやはりシートごとに定義が異なる(むしろ、関数名が似通っているため誤読しやすい)と思いますが、
ファイルごとシートごとに記述を確認しなくても良いという仕組みが提供されているのでしょうか?
ざっと使った限り、そんな機能はありません。シート毎に確認する必要があります。
しかし、それがどれほどの問題になるでしょうか?関数定義のオーバーライド可能な言語はいくらでもあるわけで、それら言語と大差ないでしょう。定義が複数ファイルに渡っていれば、このLAMBDA関数より難しい場合だってある。IDEのサポートがあれば、このLAMBDA関数より簡単ですが、Excelにしたって、「名前の定義」一ヶ所を確認するだけですね。
そういたしますと
使用している関数を別シートに列挙するマクロを入れまして隣の列にはコメントを書けるように致しましょうその書式は互換性のために先頭に#を入れる書式にしておきましょうそうして更にそのシートから関数を呼び出せるように関数はを使うときはINDIRECTで書くルールにしましょうか
こういう感じになるんですね
# このExcel作ったやつを出せやっ!的未来
1文字1セルのシートを作って、BASIC で記述しよう#コメントはREMまたはシングルクォーテーションから開始
昔のマクロシートに倣ってユーザー関数シートというものを追加しよう。
マクロは大嫌いだけど、ワークシートの式の方って過去資産を保守するケースってそれほどあるものかね?なんか出力結果おかしいんだけど式がわけわからん、今の捨てて書き直そうで済まないかしら。セル式の場合共通関数とかは原則使えないから影響範囲が限定されるかなと。
セル式の場合共通関数とかは原則使えない
共通関数を作れるようにしようというのがLAMBDA関数 [microsoft.com]なんですわ。
> Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
昔、バイト先のおじさんが同じようなことを言ってました
Excelは良くない。昔はExcelなんて無かった。ソロバンがいちばん便利だ、と。
Excelって保守も作者以外が理解する必要もなく、何か変えたい・やりたいときには一から作り直すものだと考えてます。そこを割り切ればExcelも悪くない。
Excelに限らず…単純な記述でできないことはやらないという自制が働かないのはなんでなのか…
単純に記述することが、本質的に不可能なことがあるから、ではなかろうか。
そうしないとIT利権で金取れないからね。
本人はその時点までが単純でそれを理解してるから、そこに多少の記述を加えてもまだシンプルだと思っている。それが繰り返された結果が現実のカオスだよ。
一本二本の抜け毛でハゲにはならないが、気付いたらハゲてる。そういうことさ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
便利な反面、これまで以上に難読化が進む…… (スコア:2)
Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
記述箇所バラバラで、ひたすら長い数式に複雑に飛びまくる参照、そして、LAMBDAはその複雑な数式を隠蔽してしまうと思われる。
こういうのを活用して複雑なことをやろうとすればするほど、作成者以外には理解不能なシートが生まれるんじゃないかと思う。
使いこなせればとても便利なのは間違いないんだけど、保守性にはめちゃくちゃ気を使う必要がありそう。
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
Excelで関数を定義できる、というのは正に可読性・保守性を上げるためのものだけどね。これまで同じロジックを何百ものセルにコピペすることがどんだけ多かったことか。そして一部の修正漏れでバグが発生することがどんなに多かったことか・・・
Re: (スコア:0)
せっかく関数定義して保守しやすいようにしたはずなのに
昔からの習慣が抜けない人に保守されたばかりに関数定義があちこちにコピペされるカオスに
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
で、 Advanced formula environment [microsoft.com] ってのが出てきたんだな。
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
記述箇所バラバラで
このLAMBDA関数に関しては、そうはならないよ。
名前付き関数としては、「名前の定義」で定義される。
名前なし関数としては、LET関数と組み合わせてそのセルの中でしか使われない。
# 一度くらい使ってみてた?
Re: (スコア:0)
よくわからないし、O365を買っていないので教えてください。
「名前の定義」ということはブックかシートごとに管理ということなのでしょうが、
シートごとの場合はシートごとに数式の定義が異なる可能性があり、
ブックの場合はシートのコピー等で名前重複を避けるために名称が変更されている可能性があり
やはりシートごとに定義が異なる(むしろ、関数名が似通っているため誤読しやすい)と思いますが、
ファイルごとシートごとに記述を確認しなくても良いという仕組みが提供されているのでしょうか?
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
ファイルごとシートごとに記述を確認しなくても良いという仕組みが提供されているのでしょうか?
ざっと使った限り、そんな機能はありません。
シート毎に確認する必要があります。
しかし、それがどれほどの問題になるでしょうか?
関数定義のオーバーライド可能な言語はいくらでもあるわけで、それら言語と大差ないでしょう。
定義が複数ファイルに渡っていれば、このLAMBDA関数より難しい場合だってある。
IDEのサポートがあれば、このLAMBDA関数より簡単ですが、
Excelにしたって、「名前の定義」一ヶ所を確認するだけですね。
Re: (スコア:0)
Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
記述箇所バラバラで、ひたすら長い数式に複雑に飛びまくる参照、そして、LAMBDAはその複雑な数式を隠蔽してしまうと思われる。
そういたしますと
使用している関数を別シートに列挙するマクロを入れまして隣の列にはコメントを書けるように致しましょう
その書式は互換性のために先頭に#を入れる書式にしておきましょう
そうして更にそのシートから関数を呼び出せるように関数はを使うときはINDIRECTで書くルールにしましょうか
こういう感じになるんですね
# このExcel作ったやつを出せやっ!的未来
Re: (スコア:0)
1文字1セルのシートを作って、BASIC で記述しよう
#コメントはREMまたはシングルクォーテーションから開始
Re: (スコア:0)
昔のマクロシートに倣ってユーザー関数シートというものを追加しよう。
Re: (スコア:0)
マクロは大嫌いだけど、ワークシートの式の方って過去資産を保守するケースってそれほどあるものかね?
なんか出力結果おかしいんだけど式がわけわからん、今の捨てて書き直そうで済まないかしら。
セル式の場合共通関数とかは原則使えないから影響範囲が限定されるかなと。
Re: (スコア:0)
セル式の場合共通関数とかは原則使えない
共通関数を作れるようにしようというのがLAMBDA関数 [microsoft.com]なんですわ。
Re: (スコア:0)
> Excelで凝ったことすると何が一番困るかって、後から見たときに何やってるかを追うのが目茶苦茶大変なんだよね……。
昔、バイト先のおじさんが同じようなことを言ってました
Excelは良くない。昔はExcelなんて無かった。ソロバンがいちばん便利だ、と。
Re: (スコア:0)
Excelって保守も作者以外が理解する必要もなく、何か変えたい・やりたいときには一から作り直すものだと考えてます。
そこを割り切ればExcelも悪くない。
Re: (スコア:0)
Excelに限らず…
単純な記述でできないことはやらない
という自制が働かないのはなんでなのか…
Re:便利な反面、これまで以上に難読化が進む…… (スコア:1)
単純に記述することが、本質的に不可能なことがあるから、ではなかろうか。
Re: (スコア:0)
そうしないとIT利権で金取れないからね。
Re: (スコア:0)
本人はその時点までが単純でそれを理解してるから、
そこに多少の記述を加えてもまだシンプルだと思っている。
それが繰り返された結果が現実のカオスだよ。
一本二本の抜け毛でハゲにはならないが、気付いたらハゲてる。そういうことさ。