こんな表で一気に平均値出せますか?【エクセル】
例えば、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ぴったりではありません。
分かりにくい説明かもしれませんが、よろしくお願いします。
No.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列という微妙な位置になってしまうので、
必要であれば、調整、もしくは非表示にした方が良いと思います
No.6
- 回答日時:
#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列の平均値がでます。
No.5
- 回答日時:
エクセルは2007ですか?
関数
AVERAGEIF
は使用できますか?
できるという前提で、すすめます。
平均値を表示させるセルに、次の式を入れます。
=AVERAGEIF($B:$B,$A$1,$B:$B)
これでセル(A1)にある項目の平均値がでます。
=AVERAGEIF($B:$B,$A$101,$B:$B)
これでセル(A101)にある項目の平均値がでます。
質問内容から平均値を求める項目は100個にも登ると思われますので、
平均値だけを表示するシートを別に追加した方が見やすいかなって老婆心ながら。
的外れの回答ならごめんなさい。
No.4
- 回答日時:
こんばんは!
少し強引な感じもしますが・・・
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
No.3
- 回答日時:
エクセルを使い出した初心者は、関数利用に凝り固まりがち。
「何でも関数」に見える。この質問もそうでないか。
エクセルにはピボットテーブルという便利な機能があり、広く使われているのだ。
それを勉強のこと。
操作
データーピボットテーブル・・・
例データ
氏名計数
a10
b2
a3
c2
b4
a5
結果
平均 / 計数
氏名合計
a6
b3
c2
総計4.333333333
レイアウトのデータのところでダブルクリックして、普通は合計が既定値だが、そのところを、平均に直すだけ。
配列数式、VBAなどの方法もあるが、時間がかかり馬鹿らしい。
No.2
- 回答日時:
マクロが使える環境ならば、以下のマクロを実行してみてください。
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
No.1
- 回答日時:
正確に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行毎の平均点が表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Excel(エクセル) 単価シートから単価をエクセル関数で自動取得する方法 1 2023/07/02 22:00
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数-文字列で自動作成さ...
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
Excelで50個のセルに同じ文字を...
-
スプレッドシート、Excelでの数...
-
Microsoft Officeの中古は信用...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシートで使う数式を...
-
エクセルでの特別な文字を上に...
-
エクセル日付 文字列の関数がエ...
-
A列とB列を参照してC列に連番を...
-
エクセルVBA、別ブックへ転記す...
-
各ページの1番上の表示について
-
エクセルでセルに標準で入力さ...
-
EXCELの質問です 119から足した...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報