- ベストアンサー
エクセルの関数で列内の数字の平均値を求める方法はあるのか?
- エクセルで列内の数字の平均値を求める方法はあるのかについて質問です。
- ある列内のセルにある数字を指定し、その数字から下一列にある数字をすべて選択したような状態でその中の数字の平均値を求める方法はあるのでしょうか?
- 具体的な例として、エクセルの表において列内の数字を指定し、その数字から下の列にある数字を全て選択し、その中の数字の平均値を求める方法が知りたいです。
- みんなの回答 (14)
- 専門家の回答
質問者が選んだベストアンサー
No.2です! 投稿した後でNo.1さんの補足を読ませてもらいました。 >3211 3215とある別々のセルに入力したら 自動的に3212~3215の間んぽ・・・ とあるのですが 3211と入力するとその値を超えたものから3215までの平均を出したいという意味なのですかね? もしそうであれば、その下にある >3211 3215 が 3219 3226 に変えたら 3219~3226間の数字の平均がでるような・・・ が違う事になってしまいますが・・・ 一応参考として 前回のD3セルの数式を =IF(COUNTBLANK(D1:D2),"",SUMPRODUCT((A1:A1000>D1)*(A1:A1000<=D2)*(A1:A1000))/SUMPRODUCT((A1:A1000>D1)*(A1:A1000<=D2))) に訂正すれば、D1セルの値を超えて~D2セルの値までの平均が出ると思います。 以上、お役に立てば良いのですが 何度もごめんなさいね。m(__)m
その他の回答 (13)
- layy
- ベストアンサー率23% (292/1222)
毎度書いていますが・・・・、 >この程度の話を会社の秘密事項なら、 「何でもかんでも(会社内の作業を)掲示板頼りってのはよくないのでは?」ということです。 「掲示板で教わったまま使ったけど、稼働してから一部間違いがあることに気付きました。私は当時間違いに気づきませんでした。」などの上司・取引先への言い訳は最悪。 最終的には「質問者自身での確認」かと思ってます。 でも、 初心者だろうしそう質問せざるを得ないのだろうから、 投稿したらしたで、教えて支援するし、技術を習得してもらうしかない。 質問者へ 何も補足で聞くこともなく納得のいく結果が得られたら 閉じてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
たぶん、#9さんに反応しただけで、#2さん以降は、何も読まれてはいないのだと思います。貼り付けて答えが出れば、それで良いのでしょうけれども、ここの掲示板は、回答者など、掃いて捨てるほどいるのだから、一人が回答してくればよい、というのが、ここの基本ポリシーのはずです。しかし、質問者さんのマナー違反は、「やっちゃったね」というところです。人によっても反応が違いますから、それは気をつけないといけないことです。私個人は、気にしていません、というか、ここの掲示板は、システム的に、回答者軽視でだから、そんなものだと思います。ここの掲示板は、後出しで、他人の間違いを指摘すれば、指摘回答として、回答が正しくても、削除されてしまいます。本気に書いていたら、バカバカしくてやっていられません。 ただ、質問が曖昧で、実際のポイントを外している可能性は大きいです。 私の指摘ポイントは、数字が一意なのか、そうでないのか、結局は無視されていますし、そんなことは、解答と思われるものがあれば、その後は、どうでも良いことだと思います。一応、一意でなくても、該当数値がなくても、計算が出来るようには作られています。一意というのは、データの中に、一個しかないという意味です。 本来は、どういうデータか、何に使うかって書けばよいわけです。経験者なら、すぐに分かります。例えば、ヒストグラムというだけで、その回答の持って行き方が分かります。 ただ、この程度の話を会社の秘密事項なら、手厳しい言い方をするけれど、掲示板で質問などしないほうが良いと思います。もう、質問としては成立はしていませんから。 なお、数字が一意でなかったら、、MATCH 関数等は使えません。別に誰の回答を特定するものではありませんが。 こういうものは、技工に走らずに、オーソドックスに考えたほうが良いと思います。 貼り付けて答えが出てほしいなら、#8をまとめたものは、以下のようになります。 一通りのエラー処理を備えた関数式です。 B1, B2 に数値を、下限・上限を入れるとすればこのようになります。 これでは、何も考えてもらえなくなるでしょうけれど。 なお、このデータ範囲は、A:Aでも、問題ありません。 =IF(AND(COUNT($A$1:$A$24)>1,COUNT(B1:B2)=2,B2>B1),(SUMIF($A$1:$A$24,">="&B1)-SUMIF($A$1:$A$24,">"&B2))/(COUNTIF($A$1:$A$24,">="&B1)-COUNTIF($A$1:$A$24,">"&B2)),"")
- layy
- ベストアンサー率23% (292/1222)
ちょっとしたことでもいろいろやり方がありますから、 同じ結果が出る回答はたくさんあります。もちろん見当違いもあります。 自分で理解できる仕掛けからマスターしてください。 使えるもの、使えないもの、他への応用利くもの、他への応用利かないもの、 見極めることも必要になってきます。 基本的には、 自分でできるところまで考えて作っていけるように、しましょう。 「平均出す前に件数や合計を出そう??」 「xxx関数を使ったらどうだろう??」 と考えるだけでも、質問・回答がグッと減ります。 システム開発に関わる仕事をやっているなら、 ここでの質問の書き方は仕様書の書き方につながってきます。 ファイル添付しなくても伝わる書き方、 要点をとらえる書き方、 繰り返せばコツをつかめると思います。 一番下の「3235」あたりまで書く必要はなかったと思います・・・・。 --------------------------------- 会社でやっている資源・情報を公に提示するのはサンプルと言えどもよくありません。 企業内で掲示板などの投稿、芸能等のページ閲覧を禁止させているところも多いです。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No3です。お礼を書かれる前にどうしてこちらで提案された式を試験していないのでしょう。まさにあなたがおっしゃるようなことを見込んで回答しているのです。試験もなさらないですべての方に同じお礼を書かれているなど残念なことですね。
- imogasi
- ベストアンサー率27% (4737/17069)
在るセルをクリックしてそのセルがどこ(行と列)をしる関数は無い。 VBAで作れば別だが。 >数字を指定し これをA列以外に入力するなら、その隣のセルに 下記ではD4に =AVERAGE(OFFSET($A$1:$A$100,MATCH(C4,$A$1:$A$100,0),0,COUNT($A$1:$A$100)-MATCH(C4,$A$1:$A$100,0)+1)) MATCH関数で位置(行)を見つけ、その次行から終わり行までのデータ数を求めて、セル範囲化して 、そのセル群の平均を出している。 例データ A列 B列(参考)C列3213は指定数(C4セル、何処のセルでも良いが) 3210 3211 3212 3213 3213 3225.2 3214 3214 3215 3215 3217 3217 3218 3218 3220 3220 3221 3221 3222 3222 3223 3223 3224 3224 3225 3225 3226 3226 3227 3227 3228 3228 3229 3229 3230 3230 3231 3231 3232 3232 3233 3233 3234 3234 3235 3235 64504 3225.2 見つからない場合の対処など省略。
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
補足願います。 1.数値例と*が付いたコメントが混ざって判りにくいのですが、3333ってのは数値例ですか? 2.数値は常に昇順ですか?バラバラですか? 3.上記2が昇順で無い場合、3212~3215の間ってのは、セル範囲(3212が入っているセルから3215が入っているセルまで)?3212<=n<=3215の数値? 4.Excelのバージョンは?Excel2007以降で、並びが昇順ならAverageifsで非常に簡単なんですが……。
お礼
ご回答ありがとうございます。 ちなみにEXCEL2000です・・・(;;) 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
ヒストグラムのデータを取るように、不良数値を省いて中心値というものを出すことではないでしょうか。 本来、中心値は、TRIMMEAN ですが、こちらは、不良数値を弾くことが出来ませんので、以下のようにします。 当然のこと、データの数字はランダムに並んでいるものとします。また、数値は一意ではないということも条件に加えておきます。そうでない場合は、回答が異なってくるはずです。数値が一意なら、MATCH関数が可能です。 それは、SUMIF と、COUNTIF で出来ると思います。 Data は、A1:A24 までとする。 C1:3212 C2:3215 D1:=COUNTIF($A$1:$A$24,">="&C1) D2:=COUNTIF($A$1:$A$24,">"&C2) D3:=D1-D2 E1:=SUMIF($A$1:$A$24,">="&C1) E2:=SUMIF($A$1:$A$24,">"&C2) E3:=E1-E2 E4:=E3/D3 このようにすればよいはずです。
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- layy
- ベストアンサー率23% (292/1222)
C1とD1を用意して範囲を入力します。 数値の右のB列に条件式をいれてC1とD1の範囲に当てはまるなら1、以外は0とでもします。 ここまでなれば、B列が1になっているものだけの合計、件数、平均が出しやすくなります。 ヒントになれば。 さらに VBAでセルを1つずつ操作する、でも出来ます。
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
昇順に並んでいて完全一致でなくてよいなら E2セル =AVERAGE(INDEX(A:A,MATCH(C2,A:A)):INDEX(A:A,MATCH(D2,A:A))) 昇順に並んでいない。および、完全一致が条件なら =AVERAGE(INDEX(A:A,MATCH(C5,A:A,0)):INDEX(A:A,MATCH(D5,A:A,0))) 推奨はしないのですが、オートフィルコピーしないなら OFFSET関数を使ったほうがわかりやすいかもしれません
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>数値 >3210※例えば >3211 3212と3215とあるセルに入力したら自動的に3212~3215の平均値の結果が返るような >3333 関数です。 上記の説明とその下の数字の並びの関係が全く理解できません。 単純に、昇順に並んでいるデータの特定の範囲の数字の平均を出したいという意味なら以下のような関数になります。 (元データがA列にあって、開始数字がC1セル、終了セルがD1セルに入力されている場合) =AVERAGE(INDEX(A:A,MATCH(C1,A:A,0)):INDEX(A:A,MATCH(D1,A:A,0)))
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るようになりました。 ありがとうございました。
- 1
- 2
お礼
ご回答ありがとうございます。 会社であせりながら質問文を作成していたため、後で確認したら、文がおかしなことになってしまっていて、修正することもできず、読みにくくなってしまい、申し訳ありませんでした。 本当はエクセルのサンプルファイルを図として、添付したかったのですが、会社のパソコンからだと暗号化がかかってしまい、添付もできず、、、。今は自宅のパソコンなので補足でも添付できれば・と思ったのですが、できないのですね(;;) 1111 2222 3333 4444 5555 6666 7777 8888 ・・・・・・とA列に数値が並んでいると仮定して、例えば2222と7777をB1セルとB2セルに入力したら B3のセルに2222~7777までの数値すべての(つまり2222,3333,4444,5555,6666,7777)の平均を 返すような式があればと思っていました。 なので、tom04様がNo.2でご回答された関数で希望の結果(1000セルあれば足ります)が返るように なりました。 ありがとうございました。