人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: student34
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:エクセル カウント クラス スマート セル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD
●35ポイント

下記の様なデータが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です。

◎質問者からの返答

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

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


2 ● 黒ひよこ
●35ポイント

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

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


入力データ

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関数について

◎質問者からの返答

ありがとうございます。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ