概要
下の表①からクロス表を作る方法
表①
ID | 性別 | 年齢 |
---|---|---|
A1 | 男性 | 35 |
A2 | 女性 | 33 |
A3 | 男性 | 22 |
A4 | 男性 | 45 |
A5 | 女性 | 27 |
A6 | 男性 | 51 |
A7 | 女性 | 35 |
できたクロス表
性別/年齢 | 30歳未満 | 30歳以上 | 合計 |
---|---|---|---|
男性 | 1 | 3 | 4 |
女性 | 1 | 2 | 3 |
合計 | 2 | 5 | 7 |
やらかしたミス
条件を指定して数を数えるにはcountif関数が有効です
しかし、いきなりこのクロス表に下のように入力すると
性別/年齢 | 30歳未満 | 30歳以上 | 合計 |
---|---|---|---|
男性 | =COUNTIF(A:C,AND(B:B=男性,C:C<30)) | ||
女性 | |||
合計 |
結果
性別/年齢 | 30歳未満 | 30歳以上 | 合計 |
---|---|---|---|
男性 | 0 | ||
女性 | |||
合計 |
このようにエラーこそ出ませんが
正しい値は出てきません
理由はそもそもcountif関数の入力方法が間違っています
countif 関数は 指定した範囲で条件に当てはまるものを数えるのですが
項目(B:BやC:C)の指定はできません
正しい使い方
countif(B:B,"男性") これでB列の男性というセルの数を出力します
この例でいうとB:Bは探す範囲です
後ろの"男性"の部分には検索範囲を入れてはいけません
正しい手順
まずcountif関数では複数条件で数えることができません
そのため、まずクロス表のセルごとに計算します
表①の年齢の右に
==IF(B2="男性",IF(E2<30,"M_U","M_O"),IF(E2<30,"W_U","W_O"))を入力します
これでその行の人物がクロス表のどこに当てはまるかを表しています
M_U:男性で30歳未満(ManとUnder)
M_U:男性で30歳以上(ManとOver)
W_U:女性で30歳未満(WomanとUnder)
W_U:女性で30歳以上(WomanとOver)
その後にクロス表のセルにcountifで対応したものを入れれば完成です!
合計の部分はsum関数で!
性別/年齢 | 30歳未満 | 30歳以上 | 合計 |
---|---|---|---|
男性 | =COUNTIF(D:D,"M_U") | =COUNTIF(D:D,"M_O") | =sum() |
女性 | =COUNTIF(D:D,"W_U") | =COUNTIF(D:D,"W_O") | =sum() |
合計 | =sum() | =sum() | =sum() |
さいごに
今回はcountifでクロス表を作りたいときに起こりがちなミスを解説しました
検定で使うこともあると思うので、調べる手間を省きましょう!