2009年09月19日

配列を扱える関数

このクイズの解答で書いたのは、要するにこういうことです。

modesample.jpg

上の例では、単にA1:A10のセル範囲に入力されている値の最頻値ではなく、その範囲の各セルの値に1を加えた数値のグループの中での最頻値を求めています。
A1:A10のセル範囲の中で一番多く登場するのは「1」ですから、それに1を加えた「2」というのは正しい答えです。

では、MODE関数をMAX関数に変えた場合はどうでしょう?

maxsample.jpg

A1:A10のセル範囲の各セルの値に1を加えた数値のグループの中での最大値は「5」のはずですから、この結果は正しくありません。
こういう数式の書き方をした場合、「A1:A10」というセル範囲が指定されていても、実際に参照されるのは、数式が入力されたセルと同じ行にあるA2セルの値だけです。
したがって、そのセルの値に1を加えた「4」が答えとして表示されています。

この数式はまだ対象のセル範囲のセルと同じ行にあるため、こういう形で計算が行われ、エラーにもなっていませんが、たとえばC11セルなどに同じ数式を入力すると、#VALUE!エラーになってしまいます。

上でいうところの「値のグループ」とは、つまり配列です。
上記のMAXを使った数式で、A1:A10のセル範囲の各セルの値に1を加えた数値の配列の中での最大値を求めたい場合は、単にEnterするのではなく、Ctrl+Shift+Enterで、配列数式として確定する必要があります。

このあたりのことは、私のWebサイトのこのページで説明しています。

SUMやMAXも「配列を扱える関数」ですが、その対応の度合いはいわばレベル1といったところです。
MODEは、SUMPRODUCTなどと同じく、いわばレベル2の配列対応関数というわけです。

その機能や数式内での使い方において、SUMやMAX、AVERAGEなどと同じように考えてしまいがちなMODE関数ですが、こうした違いは意識しておいたほうがいいかもしれません。
posted by 土屋和人 at 11:35| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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