- ベストアンサー
進路希望の志望別人数
中学校の教師をしております。 3年生の進路希望を集計しているのですが、以下のように希望をとって入力しています。 公立第一希望 公立第二希望 私立第一希望 私立第二希望 A男 101 102 103 104 B男 102 201 501 105 ・ ・ ・ 学校名は、コードを振って整理しています。上の数字は、コード番号です。 そこで、希望ごとに人数を集計したいのですが、高校に振ったコードが200以上もあるため、 (1)希望のある学校のみ、抽出してカウントしたい (2)公立第一、公立第二、私立第一、私立第二それぞれで希望している人数をカウントしたい 第1希望 第2希望 A校(101) 4 1 B校(102) 0 3 Countifでは行数が増えすぎて使いにくい。DCOUNTでも作業が面倒走なので・・・。 いい方法がありましたら、是非教えていただきたいのです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
質問を理解するのにお示しのようなサンプル表は必須ですが、書いたからには矛盾しないようにお願いしたいものです。回答者に対してそのくらいの気遣いはしてください。 最初の表では「公立第一希望」に102があるのに、2番目の表では「B校(102)」が0となっています。「何じゃこりゃ!」です。 それはさておき、ピボットテーブルで作成したものが下記のようになればよろしいのでしょうか?尤も、これを得るためには最初の表を加工するか、根本的に作り直す必要がありますが。 データの個数/志望校 優先順 公私 志望校 1 2 総計 公 101 4 1 5 102 1 3 4 201 3 4 7 202 1 1 2 私 103 3 3 104 3 3 105 1 2 3 501 2 2 4 502 3 2 5 総計 18 18 36
- KURUMITO
- ベストアンサー率42% (1835/4283)
ごめんなさい。シート2でのC2セルへの入力の式は次のようにしてください。 =IF($B2="","",COUNTIF(Sheet1!B:B,$B2))
- KURUMITO
- ベストアンサー率42% (1835/4283)
COUNTIF関数でどうして行数が増えて困るのでしょう。 シート1にお示しの第1の表があるとします。 A2セルから下方に氏名が、B2セルから下方に公立第1希望が、C2セルから下方に公立第2希望が・・・・ シート2にお求めの表を作るとしてA2セルから下方にA校などの名前が、B2セルから下方にコード番号が、C1セルからF1セルまでには公立第1希望・・・私立第2希望までの文字が入力されているとします。 C2セルには次の式を入力しF2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグすればよいでしょう。 =IF(B2="","",COUNTIF(Sheet1!B:B,$B2))
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますが・・・ 他の方法の一例です。 無理矢理関数を使ってやってみました。 学校コードに基づいて第1希望・第2希望を集計するようにしています。 尚、学校コードを抽出する際に重複を避けるために↓の画像のように A・B列を作業列とさせてもらっています。 (作業列が目障りであれば、数式を入れた後に、非表示にしてみてください。) A3セルに(配列数式になります) =IF(COUNTA($E$3:$H$1000)>=ROW(A1),INDEX($E$3:$H$1000,IF(MOD(ROW(A1),COUNTA($E$3:$E$1000))=0,COUNTA($E$3:$E$1000),MOD(ROW(A1),COUNTA($E$3:$E$1000))),INT((ROW(A1)+1)/COUNTA($E$3:$E$1000))),"") という数式を入れていますので、この画面から数式をコピー&ペーストした後に、F2キーを押すか、数式バー内を一度クリックして 編集可能にします。 そして、Shift+Ctrl+Enterキーを押してみてください。 数式の前後に{ }マークが入り配列数式になります。 そして、B3セルに =IF(COUNTIF($A$3:A3,A3)=1,ROW(A1),"") という数式を入れ、A3・B3セルを範囲指定した後に、 B3セルのオートフィルハンドルで下へずぃ~~~!とコピーします。 とりあえず1000行まで対応できる数式にしていますので そのくらいまでコピーしてもかまいません。 そして、K2セルに =IF(COUNT($B$3:$B$1000)>=ROW(A1),INDEX($A$3:$A$1000,SMALL($B$3:$B$1000,ROW(A1))),"") L2セルに =IF($K2="","",COUNTIF(E$3:E$1000,$K2)+COUNTIF(G$3:G$1000,$K2)) とし、L2セルの数式をM2セルまでオートフィルでコピーします 最後に、K2~M2セルを範囲指定し M2セルのオートフィルハンドルでこれまた、下へずぃ!ずぃ~~!っと コピーすると↓の画像のような感じの表になります。 (学校コードのみ参照し、学校名は無視しています) 尚、学校コードは元データの左上から新出順に表示されますので、 ちょっと、希望とは食い違うかもしれませんね。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。 そして、たぶん画像が小さくて判りづらいと思います。 どうも長々と失礼しました。m(__)m
お礼
ありがとうございました。 配列数式は難しくて、避けて通っていたところです。 勉強しなければいけませんね。 貴重な時間を割いていただいて、ありがとうございました。
お礼
ありがとうございました。 まさに、自分がやりたかったことです!ピボットテーブルも試してみたのですが、設定の方法が間違えていたんですね。 本当に助かりました!感謝します。