【エクセル】1つのシートから,複数の度数分布表を作りたいと思っています。例えば,1つのシートに,2つの学級の英語の試験が入力されているとして,クラスごとの度数分布表を別々に作りたいのです。

 Frequency関数やアドインのヒストグラムは,セル範囲で対象を決めます。その方法で,各クラスのデータが入っている部分だけを,繰り返し範囲設定してやればいいのですが,もっとスマートな方法を探っています。条件式を組み合わせて,クラスのセルが1組で範囲が0点から5点ならカウント,という方法もあるかもしれませんが,これもあまりスマートに感じません。
 もっとスマートな方法をご存じの方がおられましたら,ご教授願えますでしょうか。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/03/17 22:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント35pt

下記の様なデータがSheet1にあったとします。

氏名 クラス 得点
青木 α 94
伊藤 β 68
上野 α 65

この場合、下記の様に入力します(別シートのA1からを前提にしています)。

クラス名 α
得点範囲 頻度
0 =A4-1 =FREQUENCY(IF(Sheet1!B2:B4=D1,Sheet1!C2:C4,""),C3:C6)
20 =A5-1
40 =A6-1
60 =A7-1
80 100

FREQUENCY関数の所はC3からC7までを選択して入力の上、Ctrl+Shift+Enterしてください。

みそはIF(Sheet1!B2:B4=D1,Sheet1!C2:C4,"")の部分で、配列数式というそうです。

ただ、ANDやOR関数が使えないので、条件が複雑な場合は色々工夫が必要なようです。

また、配列数式の編集方法は特殊なので知らないひとはいじれなくなってしまいます。

詳しくは http://pc.nikkeibp.co.jp/pc21/special/hr/hr1.shtml をご覧ください。


この例では元データのあるシートを直接参照していますが、ここは後々のため、参照範囲に名前を付けておくとよいでしょう。

後はこのシートをコピーし、クラス名を変えればOKです。

id:student34

ありがとうございました。

Frequencyの内側に論理式を入れる,というのは思いつかなかったです。これは大変スマートな方法だと思います。

2011/03/11 19:08:27
id:Dark1984B No.2

回答回数17ベストアンサー獲得回数0

ポイント35pt

おっしゃられている「スマートではない方法」に入るかも知れませんが

こういったやり方もあるので、ご参考までに紹介させて頂きます。


入力データ

A B C
1 氏名 クラス 得点
2 1-1 0
3 1-1 50
4 1-1 74
5 1-2 25
6 1-2 30
7 1-2 35
8 1-2 75
9 1-2 80
10 1-2 85
11 1-2 90


度数分布

D E F G H
1 クラス名 得点範囲 頻度
2 1-1 0 24 =SUMPRODUCT((A$2:A$11=D13)*(C$2:C$11>=E13)*(C$2:C$11<=G13))
3 1-1 25 49
4 1-1 50 74
5 1-1 75 100
6 1-2 0 24
7 1-2 25 49
8 1-2 50 74
9 1-2 75 100

SUMPRODUCT関数を使った書き方になります

IF関数のような真偽結果を用いて、論理積を行う…というのをTransFreeBSDさんが触れられている配列数式で行い、その結果による総和を返します。

ややこしいですが、複雑な条件で判定しているCOUNTIF関数と考えて頂ければ、分かりやすいかと思います。


関数については、下記リンクをご参照下さい

SUMPRODUCT関数について

COUNTIF関数について

id:student34

ありがとうございます。

せっかく教えていただいたのですが,試してみたところ,異常な重さでした。何しろ,データが大量なので・・・・・

2011/03/16 11:11:20
  • id:Dark1984B
    SUMPRODUCT関数だと重いですか…。
    データ量は考慮していませんでした。
    力になれず、申し訳ありません。


    他の処理方法としては、VBAもありますが、編集やフォーマット変更にある程度の知識を要求されるので、あまりお勧めできないです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません