2012年01月02日

UDFで配列を返す

組み込みのワークシート関数にも、戻り値として配列を返すものがいくつかあります(FREQUENCYやLINESTなど)が、これらの関数は、初心者の人にはあまりなじみがないでしょうし、「配列」と聞いただけでちょっと引いてしまう人も多いのではないでしょうか?

『追加関数50』に収録したユーザー定義関数(UDF)では、戻り値を配列として返す関数が実は結構あります。
別に趣味でそのような仕様にしたわけではなく(^^;)、汎用性などを考えるとそっちのほうが便利だろうと思ったからです。
(なお、配列の受け渡しに関しては、私のWebサイトのこのページで割と詳しく説明しています。配列自体についての解説はこちらからどうぞ)

たとえば、指定したセル範囲の中で、特定の書式(塗りつぶしの色など)が設定されたセルの値だけを集計したいとします。
UDFであれば、該当するセルの値の合計などの値を直接求めることももちろん可能です。用途や利用範囲によっては、それはそれでOKな場合も多いでしょう。
しかし、合計以外にも平均や最大値といった複数の種類の集計結果を求めたい場合は、その種類だけUDFを用意しなければならなくなります。

その点、該当する値をすべて配列として返す関数であれば、SUMやAVERAGE、MAXといった関数と組み合わせることで、どんな集計処理でも可能になります(もちろん、組み合わせる関数が配列を処理できる、というのが大前提ですが)。

さらに、配列を返す関数をINDEX関数と組み合わせて、たとえば「塗りつぶしの色が黄色である3番目のセルの値を取り出す」といったことも可能になります。

『追加関数50』にはそれ以外にも、通常は「最初に見つかったセル」に対応する情報しか返さないMATCHやVLOOKUPを拡張し、該当するすべての値を配列として返すような関数も収録しています。
もちろんその戻り値も、SUMやAVERAGE、INDEXなどと組み合わせて利用することが可能です。

また、配列の扱い方や上記のような応用的な利用法についても、いろいろと紹介しているつもりです。
posted by 土屋和人 at 10:48| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/52739474
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック