マクロを定義せずに Excel でユーザー定義の宣言関数を作成する簡単な方法がないことは、少し省略されているように思えます。エンタープライズでの厳しい戦いで XSLM を使用することはできませんが、意図を持って関数を定義できるようにしたいと考えています。
私はこれをしたいです。
=BreakEven(C1:C20)
ただし、「名前付き式」は使用できますが、マクロは使用できません。問題は、それにパラメータを渡す方法ですか? 私はいくつかのトリック (巧妙な回避策) を見てきましたが、xslx では見られませんでした。
別のタブで Breakeven() 関数を定義し、ここでそれを参照して、1 つ以上のパラメーター、実際には 2 つの範囲を渡すことができるようにしたいと考えています。文字列解析を使用する方法があると確信していますが、わかりません。
関数がセル内で評価され、「意図」を解析できる限り、関数がそのように見えなくてもかまいません。たとえば、xlsx では動作しなかったこの例 ( http://www.jkp-ads.com/articles/ExcelNames09.asp ) では、この構文を使用しています。
=IF(ROW(D3),CellColor)
「cellcolor」は関数の名前で、D3 は範囲パラメータです。私がいじっている他の解決策は、可変引数リストを使用して列形式で関数を定義することです (これは Excel スプレッドシートの 2 行です)。
[Value][function][parameter1][parameter2][parameter3]
24050 BreakEven C1:C20 A1:A20
きれいではありませんが、後者の利点は、関数を外部の読者に説明できることです。これが損益分岐点関数であることはわかっていますが、実際の式「OFFSET,INDIRECT,SUM()()()()etc」を入れると、読み取り/解析できなくなります。もちろん、その場合、Excel で右側のセルを解析して値フィールドを作成する必要があります。これにより、値の数式が乱雑になりますが、少なくとも自己記述的な行になります。
誰でもより良い方法を提案できますか?