• ベストアンサー

average関数の範囲指定について

average関数の範囲指定について教えて下さい。 列 A1 A2 A3 A4 A5 A6 ・・・・  の中で奇数列(A1,A3,A5~)のみ取り出して平均を出したいところですが、 =AVARAGE(A1,A3,・・・)という範囲指定を行った場合、ある列数を 上回ったところでエラーが発生してしまいます。 偶数列(A2,A4~)を最初から別行に組替えれば=AVARAGE(A1:??)と できるのでしょうが、表の性質上このままで計算を行いたいところです。 効果的な範囲指定をご教授下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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) 両者を(セルの中で)割り算すると平均が出る。 また範囲は余分目に設定してもよいことがわかる。

excelrank
質問者

お礼

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

その他の回答 (3)

noname#96418
noname#96418
回答No.3

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

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 奇数行 =AVERAGE(IF(MOD(ROW(範囲),2)=1,範囲) 偶数行 =AVERAGE(IF(MOD(ROW(範囲),2)=0,範囲) 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

excelrank
質問者

お礼

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

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

ウルトラC的な関数を考えるより、どこかの行にA1,A3,A5・・・を 書き出して平均したほうが早い・・・と思うのは私だけですか? そのために「書式」「行」「表示しない」メニューがあるんですし。

関連するQ&A

  • Excel 関数での範囲指定

     Excelでの関数計算は、ほとんど使用した事の無い初心者ですが、もし分かれば教えてください。 あるアプリケーションソフトにパラメーターを投入し実行させるとExcelにて表が出来ます。この表のある列の関連するものを他のある列で指定したものが有るか無いか LOOKUP関数を使用して結果を見ようと思います。しかし、計算を実行するごとに結果を出したい範囲が変わります。簡単に、関数内の範囲指定をする方法は無いでしょうか。    A    B    C    D    E 1  ミカン  100   南      10 2  リンゴ   150   北    15 3  ミカン   200   南      20 4  バナナ   250   南      30 5  ミカン   300   南      55 リンゴ有り 例えば、上のような表が出来今回は、B列の100~200(B列は連続して範囲指定できる)までの範囲を決め A列に「リンゴ」があれば、「リンゴ」とどこかのセルに表示させる。 説明がうまく出来ずわかりにくいかもしれませんがよろしくお願いします。(要は、関数内の範囲指定を他から指定する事は出来ないかなあ)

  • ☆Excel VBAでAVERAGE関数を使うとき・・・

    こんにちは。VBA初心者です。 VBAでAVERAGE関数を使いたいのですが、参照範囲を最終行まで指定したい場合、 どのようプログラムすれば良いのでしょうか?     A   B   C    1 5000  2 2000  3 3000  4 1000  5 6000  6  :  7  :    ← A列の値を平均する。           A列には膨大な行が存在すると仮定します。 VBAに詳しい方、教えてください。 どうか、よろしくお願いしますm(_ _)m

  • EXCEL2010のAVERAGE関数について

    こんばんは。 EXCEL2010ですが、同じデーターを使ってワークシートでAVERAGE関数を使って求めた平均値とVBAでApplication.Averageで求めた平均値が違います。 扱っているデーターは少数点以下桁数が20桁数の数値です。 小数点第8位まではあっているのですが、その後は違います。 例 0.00000138786111098443 0.00000137878257235606 0.00000138192909756498 普通にセルにAVERAGE関数を使って平均値を出すと 0.00000138285759363516 VBAでApplication.Avarageを使って平均値を出すと 0.00000138489510427471 (変数のデーター型はDoubleを使用) これは誤差範囲になるのでしょうか? またそれが誤差であれば、どちらが真の値になるのでしょうか? ご教授頂きたくよろしくお願いします。 <追伸> なぜVBAで平均値を求めるかというと、 平均する数の値が固定ではなくCASE毎に変動するVBAを作っています。 上記のVBAを完成し答え合わせした所、違う結果になってしまいました。 いろいろ変数のデータ型を変えたりしたのですが、解決しませんでした。

  • [EXCEL]AVERAGEでブランクを飛ばした計算式

    みなさん、こんばんは。 [EXCEL]AVERAGEでブランクを飛ばした計算式を教えてください。 よろしくお願いします。 まず A列1~13に 10 20 30 40 50 60 (空白/ブランク) 10 20 30 40 50 60 と数字が入っています。 B列6行に =IF(A6="","",AVERAGE(A1:A6))と式を入れ、この式をB列13まで延ばすと、 B列6~13は 35 38 36 34 32 30 35 となります。 私の希望は7行目のブランクを無視して数字があるところだけを指定範囲(今回は範囲は6行)計算したいのです。 結果としてB列6~13は 35 35 35 35 35 35 35 となるのが希望です。 B列6、13は、連続していますので、そのままの平均なので35ですが、 他はブランクがありますので、そのブランク1つ分を計算範囲に入れず、 範囲先頭部分をひとつ増やして計算させたいのです。 B列8ならA7を除く、A2~A6,A8の平均(AVERAGE(A2:A6,A8)) B列10ならA7を除く、A4~A6,A8~A10の平均(AVERAGE(A4:A6,A8:A10)) という感じにです。 よろしくお願いします。

  • AVERAGE関数では、小数点以下を切り上げてますよね。

    範囲指定した12個の数値を、AVERAGE関数で平均を出したら、小数点以下を切り上げて(四捨五入?)しまいました。 =AVERAGE(A1:A12) を小数点以下を切り捨てるにはどのように記述すれば良いのでしょうか。 教えてください。

  • INDEX関数について

    他の人の質問で回答がありましたが、少し私に分からないところがありました。表には、24や33,19,77などの数字があり、この表から偶数の数と奇数の数を求める関数なのですが、 こう回答がありました。 その1 奇数の数 =COUNT(INDEX(0/(MOD(A1:D4,2)=1),)) この関数で奇数の数が求められるそうですが、このINDEX(0/がよく分かりません。INDEX(範囲、行番号、列番号)ですが、 この関数式を詳しく説明してほしいのです。 よろしくお願いします。 偶数は、全体から奇数の数を引くということでいいのですが、

  • 関数で求めた2つのセル範囲内の、平均値を出したい。

    日の出から日の入までの範囲の平均温度を求めたいのですが、日の出時刻と日の入り時間はVLOOKUP関数によって求めています。 A列に時刻、B列に温度が並んでいます。 求めた時刻が例えば、日の出6:00(セル番号 A360)、日の入18:00(セル番号 A1080)となっている場合。 当然ながら、=AVERAGE(A360:A1080)と入力すれば可能ですが、 =AVERAGE(VLOOKUP関数数式:VLOOKUP関数数式)はエラーとなります。 =AVERAGE(VLOOKUP関数数式,VLOOKUP関数数式)は2点のみの平均温度となってしまいます。 どのような方法で解決できるでしょうか? あるようで見つからないのですが、指定した範囲内に一致する数値があった場合にそのセル番号を返すような数式はあるのでしょうか?

  • EXCEL関数での相対範囲指定法を教えてください

    EXCEL(2000)で、関数が参照する範囲を自由に変える方法はないでしょうか? 仕事で、時系列のデータに対する移動平均線が必要になりました。 具体的には、 =AVERAGE(R[-10]C[-1]:RC[-1]) のような関数を同一列にコピーして、左隣の列のデータを順次平均する関数が必要です。 [-10]の代わりに特定のセルの値を入れて、平均値に用いる引数の個数を自由にコントロールしたいと考えています。 =AVERAGE(R[R1C1]C[-1]:RC[-1]) 等と指定しても、エラーになるので、困っています。 よろしくお願いします。

  • average関数の範囲を、セル数で指定したいのですが

    初めて質問させていただきます。 現在、データ整理するためにexcel(2003)でマクロを組んでいます(初心者です)。その際、「あるセルから下方○○個のセルの平均値を計算させる」方法がわからずに困っております。具体的には、 A1:平均値算出に用いるデータ数 A2~A5000 生データ 上記のデータがある状態で、B2-B5000までに算出した平均値を書き込ませたいと思っています。A1の数値はファイル毎に異なります。 例えば、 A1が100の場合はB2=average(A2:A101), B3=average(A3:A102)... A1が50の場合はB2=average(A2:A51), B3=average(A3:A52)... というような処理を想定しています。処理数が少なければ手作業でやるのですが、いかんせん数が多くて辟易しております。 どなたか、お力をお貸し下さい。

  • Excelで、countif関数の範囲指定でシート名指定をするとき、セル参照にしたい

    Excelのcountif関数の対象範囲に指定するシート指定名に、他セルに記入した文字列を使いたいのですが、うまくいきません。 例えば、Xシートの$A$1:$A$20の範囲内の”出席”文字列数を別シート上で計算させたいのですが、ストレートにやれば、    =countif(`Xシート`!$A$1:$A$20, "出席")    となります。 これを、A1セルで、Xシート という文字列を記述した上で、別セルにて、    =countif(A1!$A$1:$A$20,"出席") のように記述したいのです。indirect関数はうまくいきませんでした。どなたか、ご教授をお願いします。

専門家に質問してみよう