ちょっと変わったマニアな作品が集結

こんな表で一気に平均値出せますか?【エクセル】

例えば、1行目から1万行目まで100人の人のあるデータが100行ずつ入っているとします。
A列=人名、B列=点数とします。
A列の1行目から100行目までを仮に【No.1】として、B列の1行目から100行目までランダムに点数が入っています。そして、この【No.1】の平均点を出したくて、C列の1行目に=AVERAGE(B1:B100)として、平均点を出します。
次に、【No.2】として101行目から200行目までのデータの平均点をC列の101行目に出します。
用は、このように【No.1】~【No.100】のそれぞれの平均点を出したいのですが、簡単にできる方法はありますか?
オートフィルタで【No.1】~【No.100】まで、それぞれ抽出して、式を入れればいいのですが、何しろ数が多いので、もっと簡単にできる方法があるか聞いてみました。
実際のデータは、100人以上いるし、データもそれぞれ100ぴったりではありません。

分かりにくい説明かもしれませんが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

いや、ここはすごく勉強になります。


僕は古いバージョンのExcelを使って、
ずっとネットのみの独学で勉強してたので、
AVERAGEIFなんて関数や、
ピボットテーブルなんて方法を知りませんでした……
ありがとうございます。

と、お礼投稿ついでに、古いVer.でAVERAGEIFっぽい方法を考えてみました。
※データの最初の名前のみ、IF関数でエラーになってしまいます

//////////////////////////////////////////////////////////////

A列、二番目の名前が5行目から始まっているとして、

=IF(A5=A4,"",SUMIF(A:A,A5,B:B)/COUNTIF(A:A,A5))

をC列に入れて、一番下までオートフィルでコピーします。
その後、C列をオートフィルターで空白を抽出、Deleteします。

※もし、A列に同じ名前がありそうな場合
1.D1に「1」を入力します。
2.D2に「=IF(A1=A2,C1,C1+1)」を入力します。
3.D2をオートフィルでデータの一番下までコピーします。
4.上記関数「=IF(A5=A4,"",SUMIF(A:A,A5,B:B)/COUNTIF(A:A,A5))」の
「A」を「D」にして、後の手順は同じです。
→=IF(D5=D4,"",SUMIF(D:D,D5,B:B)/COUNTIF(D:D,D5))

※手順2~3=名前を上からナンバリング
※レイアウト的にはナンバリングした番号がD列という微妙な位置になってしまうので、
 必要であれば、調整、もしくは非表示にした方が良いと思います
    • good
    • 0

#5です。


ごめんなさい、間違えました。訂正します。


=AVERAGEIF($B:$B,$A$1,$B:$B)
ではなくて

=AVERAGEIF($A:$A,$A$1,$B:$B)
これでセル(A1)にある項目の、B列の平均値がでます。

=AVERAGEIF($B:$B,$A$101,$B:$B)
ではなくて

=AVERAGEIF($A:$A,$A$101,$B:$B)

これでセル(A101)にある項目の、B列の平均値がでます。
    • good
    • 1

エクセルは2007ですか?


関数
AVERAGEIF
は使用できますか?
できるという前提で、すすめます。

平均値を表示させるセルに、次の式を入れます。
=AVERAGEIF($B:$B,$A$1,$B:$B)
これでセル(A1)にある項目の平均値がでます。

=AVERAGEIF($B:$B,$A$101,$B:$B)
これでセル(A101)にある項目の平均値がでます。


質問内容から平均値を求める項目は100個にも登ると思われますので、
平均値だけを表示するシートを別に追加した方が見やすいかなって老婆心ながら。

的外れの回答ならごめんなさい。
    • good
    • 0

こんばんは!


少し強引な感じもしますが・・・

1行目は見出し行で2行目からデータがあるとします。
一例です。
表示したいセルに
=SUMPRODUCT(($B$2:$B$10001>=(ROW(A1)-1)*100+1)*($B$2:$B$10001<=ROW(A1)*100)*($B$2:$B$10001))/SUMPRODUCT(($B$2:$B$10001>=(ROW(A1)-1)*100+1)*($B$2:$B$10001<=ROW(A1)*100))
(エラー処理はしていません。)

としてオートフィルで下へコピーではどうでしょうか?

とりあえずこれで2行目からのデータの100行ごとの平均が出ると思います。

以上、参考になればよいのですが
他に良い方法があれば読み流してくださいね。m(__)m
    • good
    • 0

エクセルを使い出した初心者は、関数利用に凝り固まりがち。

「何でも関数」に見える。
この質問もそうでないか。
エクセルにはピボットテーブルという便利な機能があり、広く使われているのだ。
それを勉強のこと。
操作
データーピボットテーブル・・・
例データ
氏名計数
a10
b2
a3
c2
b4
a5
結果
平均 / 計数
氏名合計
a6
b3
c2
総計4.333333333
レイアウトのデータのところでダブルクリックして、普通は合計が既定値だが、そのところを、平均に直すだけ。
配列数式、VBAなどの方法もあるが、時間がかかり馬鹿らしい。
    • good
    • 0

マクロが使える環境ならば、以下のマクロを実行してみてください。


A列の名前が別の名前になった時、平均計算の関数をC列に書き込みます。

A列
No.1 ※C列=A1~A3の平均
No.1
No.1
No.2 →この段階で※の計算を書き込みます。
No.2



また、A列の開始行は「1」にしてありますが、
変更する際は、「StartRow = 1」の1の部分の数字を変更して下さい。

また、実行後、「!」とエラー(?)が出ると思うので、
表示したくない場合は、
ツール→オプション→エラーチェック
『設定』の「バックグラウンドでエラーチェックを行う」か、
『ルール』の「領域内のセルを除いた数式」の
どちらかのチェックボックスのチェックを外して下さい。


Sub A列名前、B列データでC列に平均値()

Dim StartRow As Long 'A列最初の開始行用変数
Dim RowSave As Long 'データの範囲選択とC列書き込み位置用変数
Dim String_RowSave As String '書き込む際に文字列に変換する為の変数
Dim String_i As String '書き込む際に文字列に変換する為の変数
Dim NumberName As String '名前を覚える為の変数

'A列の最初の開始行
StartRow = 1

RowSave = StartRow
NnumberName = Cells(StartRow, 1)
For i = StartRow To Cells(65536, 1).End(xlUp).Row

'名前が違う場合、今までの範囲のデータの平均を、C列の名前の最初の行に書き込む
If Cells(i, 1) <> NumberName Then
String_RowSave = RowSave
String_i = i - 1

Cells(RowSave, 3) = "=AVERAGE(B" + String_RowSave + ":B" + String_i + ")"

RowSave = i
NumberName = Cells(i, 1)
End If

Next

'最終のデータの処理
String_RowSave = RowSave
String_i = i - 1
Cells(RowSave, 3) = "=AVERAGE(B" + String_RowSave + ":B" + String_i + ")"

End Sub
    • good
    • 0

正確に100行毎に平均点を求めるのでしたら、例えばC1セルにNo1とでも入力して下方にオートフィルドラッグします。


C100セルにはNo100のように表示されませね。
そこで平均点ですがD1セルには次の式を入力し下方にオートフィルドラッグします。

=IF(INDEX(B:B,ROW(A1)*100)="","",AVERAGE(INDEX(B:B,ROW(A1)*100-99):INDEX(B:B,ROW(A1)*100)))

これでD100セルの間に100行毎の平均点が表示されます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q複数列の平均を出したい

以下のようなデータがあります。このデータの大阪の4月と7月の合算した平均値を出したいのですが何か方法はあるのでしょうか。
Averegeifを使ったのですが、複数列にまたがる平均が出せませんでした。

場所4月5月6月7月
東京 1   19  37
大阪     20  38
中部     21 57
九州 4       40
東京 23    41 59
大阪 6 24 60
中部 7 43 61
九州 8 26 44 62

宜しくお願いします。

Aベストアンサー

>以下のようなデータがあります。このデータの大阪の4月と7月の合算した平均値を出したいのですが何か方法はあるのでしょうか。
ブランクのセルは除数の対象に含めないと言うことでしょうか?
提示のデータは桁が不動のため正しい配置が困難です。
場所,4月,5月,6月,7月
東京,1,,19,37
大坂,,,20,38
中部,,,21,57
九州,4,,,40
大坂,6,24,60,
中部,7,43,61,
九州,8,26,44,62
と解釈すれば添付画像のようになります。
数式は次の通りです。
G2=SUMPRODUCT((A2:A9="大阪")*(B2:E9)*(B1:E1={"4月","","","7月"})*(B2:E9>0))/SUMPRODUCT((A2:A9="大阪")*(B2:E9>0),(B1:E1={"4月","","","7月"})*(B2:E9>0))

QExcelで離れた位置のAVERAGEを求めたい

Excelで離れた位置のAVERAGEを求めたいのですが、
飛び飛びのに位置するセルをどのように選択したらよいのでしょうか?
例えば(C2.E2.G2)の合計。
初歩的な質問で申し訳ありませんがお願いします。

Aベストアンサー

average(c2:e2:g2)
というように":"を間に入れればできますよ。

Qエクセルでの一括計算方法がありましたら教えてください

A2~A60の1列に数値が入っています。
その値すべてに 0.55を掛けた値を隣のセル B2~B60に表示したいのですが
一括でできる方法はあるでしょうか?

最終的には、B2~B60の数値に隣のセルC2~C60の値を掛けた数値をD2~D60に表示したいのですが。。

1セルごとに関数を入れる以外に方法があれば と思って質問しました。
ご存知の方がいらっしゃいましたら ご指導 よろしくお願いします<(__*)>

Aベストアンサー

A2~A60の値をB2~B60にあらかじめコピーしておきます。
任意のセル(どこでもいいです)に0.55を入力します。
0.55を入力したセルを選択して、コピーします。
A2~A60の値をコピーしておいたB2~B60を範囲選択します。
編集メニューから形式を選択して貼り付けを選択し、「乗算」を選んでOKします。

上記操作はいかがでしょうか?

Qエクセルで3列おきの平均値を

こんにちは!

エクセルで、3列おきのセルの値の平均値を出したいのですが、値がエラー(#N/Aと表示されている)場合は、平均を求める計算の中に含めないようにしたい・・・というのはどうやって設定したらよいのか、お教えください!

関数等、色々試して見たのですが、よくわかりませんでした・・・。どうぞどうぞ宜しくおねがいたします!

Aベストアンサー

こんにちは~

3列おきというのはどういうことでしょうか?
たとえば、A1から L1にデータがあるとして、D1、H1、L1の平均値ということですか?

そうだとして、

> 値がエラー(#N/Aと表示されている)場合は、
> 平均を求める計算の中に含めないようにしたい

とのことでしたら、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=0)*(ISNUMBER(A1:L1)),A1:L1,""))

または、該当するセルが空白の場合も 0と考えて計算に含めるなら、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=0)*(NOT(ISERROR(A1:L1))),A1:L1,""))

と入れて、配列数式ですから、Ctrl+Shiftキーを押しながら Enterで確定してください。
数式の前後が { } で囲まれていればOK
囲まれていなければ NGですので、数式を入れたセルを選択して F2キーを押したあと、もう一度 Ctrl+Shiftキーを押しながら Enterで確定してください。

3列おきというのが、A1、E1、I1 の平均値だとすれば、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=1)*(ISNUMBER(A1:L1)),A1:L1,""))

または、該当するセルが空白でも計算に含める場合、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=1)*(NOT(ISERROR(A1:L1))),A1:L1,""))

と入れて、Ctrl+Shiftキーを押しながら Enterで確定してください。

こんにちは~

3列おきというのはどういうことでしょうか?
たとえば、A1から L1にデータがあるとして、D1、H1、L1の平均値ということですか?

そうだとして、

> 値がエラー(#N/Aと表示されている)場合は、
> 平均を求める計算の中に含めないようにしたい

とのことでしたら、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=0)*(ISNUMBER(A1:L1)),A1:L1,""))

または、該当するセルが空白の場合も 0と考えて計算に含めるなら、

=AVERAGE(IF((MOD(COLUMN(A1:L1),4)=0)*(NOT(ISERROR(A1:L1))),A1:L1,"")...続きを読む

Qエクセル 表を大きく、紙いっぱいに印刷したい

エクセルで表を作りました。
印刷プレビューで確認したところ
用紙に対して表が小さく見栄えがしません。

一つ一ついじればできると思いますが、
簡単に、
用紙いっぱいにフォントも大きくし、表も大きくし、
印刷するやり方はありますか。
教えてください。

Aベストアンサー

CtrlキーとPのキーを同時に押すと「印刷」ダイアログが呼び出せます。その状態でAltキーとWのキーを同時に押すと「印刷プレビュー」が表示されますので、印刷のイメージがつかめます(必ずしもプレビュー通りには印刷されませんが)
印刷プレビュー画面の上にある、設定のボタンを押してあげれば、余白を少なくしたり、拡大縮小印刷をパーセンテージを指定しておこなえたりします。いずれにせよ、プレビューで確認しながら拡大率を決めていけばいいと思います。なお、「拡大縮小印刷」のところに「次のページ数に合わせて印刷をする」というチェックをいれて横1×縦1にしてあげれば自動で拡大縮小印刷ができる場合がありますが、やってみればわかりますが、特に縮小印刷の場合小さくなりすぎたりする場合もあります。

Qパワーポイントで1画面に8枚印刷

パワーポイント(2010)で、A4用紙1画面に8枚のスライドを印刷する場合にはどうしたら良いのでしょうか?

Aベストアンサー

プリンターにもよりますが,次の手順で用紙1枚に8枚を印刷可能です。

パワーポイントの印刷設定で,用紙1枚あたり4スライドを指定する。
プリンターのプロパティで,1枚に2ページを割り付ける。

弱点
・4枚ずつ,2グループのようになってしまう。
・ページ番号が用紙に対応しない。


このカテゴリの人気Q&Aランキング