dポイントプレゼントキャンペーン実施中!

average関数の範囲指定について教えて下さい。

列 A1 A2 A3 A4 A5 A6 ・・・・ 

の中で奇数列(A1,A3,A5~)のみ取り出して平均を出したいところですが、
=AVARAGE(A1,A3,・・・)という範囲指定を行った場合、ある列数を
上回ったところでエラーが発生してしまいます。

偶数列(A2,A4~)を最初から別行に組替えれば=AVARAGE(A1:??)と
できるのでしょうが、表の性質上このままで計算を行いたいところです。

効果的な範囲指定をご教授下さい。よろしくお願いします。

A 回答 (4件)

各関数には(列挙型が許されるSUM、AVERAGEなど)引数の数に制限がある。

それに引かかっただけの話。
ついでながらIF関数などにはネストの数の制限もある。
2007では緩まっている関数もあるが、やはり制約はある。
>=AVARAGE(A1,A3,・・・)のような書き方は、初心者のやり方で、この質問には、定石みたいなものがある。
作業列に条件を満たす行にサイン・コードを立ててそれを対象に
計算する手もある。それをしないで
まずA1:A30のような範囲を指定すルことが出来る関数を探す。
そして行番号に条件を入れる方法です。
配列数式というのが、AVERAGEを使えるが、初めは理解が難しい。
それで 条件付き集計の定石SUMPRODUCT関数を使う。
例データA1:A9
1
2
3
4
5
6
7
1
2
式 =SUMPRODUCT((MOD(ROW(A1:A12),2)=1)*(A1:A12))  で
結果
18
件数は、空白を除く必要があるので
=SUMPRODUCT((MOD(ROW(A1:A12),2)=1)*(A1:A12<>"")*1)
両者を(セルの中で)割り算すると平均が出る。
また範囲は余分目に設定してもよいことがわかる。
    • good
    • 0
この回答へのお礼

ありがとうございました。関数の意味はよく理解できませんでしたが、数字はしっかりと反映されました。助かりました!

お礼日時:2008/10/27 14:20

例えばB列を作業列として、


(1)B1 に =A1 と入力
(2)B2 は 空白
(3)B1:B2 を範囲選択して、下へオートフィルでコピー (これで、B列の奇数行目のセルには隣のA列の値が入り、偶数行目のセルは空白になります)
(4)どこかに =AVERAGE(B:B) と入力
でどうでしょう。(2007で確認しました)
    • good
    • 0

一例です。


奇数行 =AVERAGE(IF(MOD(ROW(範囲),2)=1,範囲)
偶数行 =AVERAGE(IF(MOD(ROW(範囲),2)=0,範囲)
配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。行ではなく列での質問でした。数字反映までこぎつけなかったですが、関数の勉強になりました。

お礼日時:2008/10/27 14:23

ウルトラC的な関数を考えるより、どこかの行にA1,A3,A5・・・を


書き出して平均したほうが早い・・・と思うのは私だけですか?

そのために「書式」「行」「表示しない」メニューがあるんですし。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!