• ベストアンサー

エクセルで出席簿の集計

*********************************************   曜日時間 月1 月2 … 金5 金6 集計 科  目 国語 数学   数学 国語 国語 数学 生徒あ  出席 欠席   出席 出席 0  1 生徒い  欠席 出席   欠席 欠席 2  1 ********************************************* のような場合、金曜6時間目の右側に、 1週間分の集計の列をつくり、 科目ごとの欠席の数を合計したいのですが、 どうしたら良いでしょうか? もし都合がよいならば、「出席」を「0」、 「欠席」を「1」と入力することは可能です。 なるべく作業セルなど使わずにシンプルに したいのですが。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

こんにちは~ > もし都合がよいならば、「出席」を「0」、 >「欠席」を「1」と入力することは可能です。 ということでしたら、「出席」 「欠席」 を入力するセルをすべて選択した状態で、メニューの 「書式」-「セル」-「表示形式」タブ 「分類」 から <ユーザー定義>を選び、右の 「種類」ボックスに、 [=0]"出席";[=1]"欠席 と入れてください。( "出席" と [=1] の間にセミコロン「;」が入ります ) これで、0 を入力すれば 「出席」、1を入力すれば 「欠席」 とセルには表示されます。 「出席」 「欠席」 は表示だけで、実際のデータは 0 または 1なので、単純に足し算をすれば、欠席日数を求めることができます。 念のため、0 と 1以外は入力できないように、もう一度 出席状況のセルをすべて選択した状態で、メニューの 「データ」-「入力規則」-「設定」タブ 「入力値の種類」 から<整数> 「データ」 から <次の値の間> 「最小値」 に 0 「最大値」 に 1 と入力してください。 これで 0 と 1 以外は入力できなくなります。 ■科目別の集計方法 生徒氏名が A列、B1から右に曜日、2行目が科目名で、出席状況が3行目から入っているとします。 集計がどの列から始まっているのかわからないので、 ここでは仮に出席状況が K列まで、集計がL列からだとします。 L2 から右に集計用の科目名を入力してください。 L3に =SUMIF($B$2:$K$2,L$2,$B3:$K3) と入れて、右に科目数分フィルコピー そのまま下に生徒人数分フィルコピーしてください。 ★絶対参照($)のつけ方に気をつけてください。( L$2、$B3:$K3 です ) ★セル位置は実際の表に合わせて変更してください。

aroi-aroi
質問者

お礼

なるほど、表示形式をこんな風に使うやり方が あるんですね!目から鱗です。 それから、SUMIFって横方向にも 使えたんですね?! 勝手に縦方向だけと思いこんでいました。 丁寧でわかりやすい説明、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Ryokucha
  • ベストアンサー率25% (115/450)
回答No.3

複数の条件で、個数を数えるには SUMPRODUCT関数を使います =SUMPRODUCT((B1:M5="国語")*(B2:M2="出席")) B1:M5には科目の行を指定(国語、数学・・・1週間分) B2:M2にはその生徒の出欠結果の行を指定 します。(BとかMは説明用で適当です) これでその生徒の国語の出席回数が求められます。

aroi-aroi
質問者

お礼

おおっっ!! SUMPRODUCTですかぁ! 意外と簡単にできますね。 わかりやすい説明ありがとうございました。 この辺の関数には弱いもので(^^;) 勉強してレパートリーに入れたいです。

全文を見る
すると、全ての回答が全文表示されます。
  • naochoko
  • ベストアンサー率36% (11/30)
回答No.2

すいません、回答したnaochokoですが、ご質問内容をよく読んでなかったようで・・・ 科目ごとの欠席の数の集計ですね。 それでしたらVLOOKUPかな? でもその場合、縦の表にして、さらに並べ替えしなければいけないはずなので無理ですね。 また方法を思いついたら回答しますm(__)m

aroi-aroi
質問者

お礼

そうなんです~。 表の向きは変えたくないんです。 また、よろしくお願いしま~す。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • naochoko
  • ベストアンサー率36% (11/30)
回答No.1

とても簡単ですよ! 右端の合計列に、COUNTIFという関数を使います。 まず一番上の合計のセルにカーソルを合わせて、挿入→関数をクリックし、関数の中から「COUNTIF」を選びます。 「範囲」のところで集計したい部分を選び(たとえばセルE3が合計の場合、A2:E2とか)、「検索条件」のところに"欠席"と入力します。 この場合、必ず前後に"をつけてくださいね! これでOKをクリックします。 すると集計できているはずです。 あとは合計の列の一番下までこの数式をコピーペーストすれば表の完成です。 注意点はとにかく、日本語の検索条件を入れる場合は必ず""をつけることです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで出席簿

    頼まれて出席簿を作る事になりました。 普段あまりExcelは使わないので、早速つまってしまいました。ご教授ください。m(__)m   A   B  C  D ・・・  X   Y   Z   AB 1    1日 2日 3日    31日 出席 欠席 開講数 2曜日  月  火  水    水 3太郎 4花子 こんな感じです。 出席は無記入で、欠席の時に斜線(スラッシュ)を引く形で、休日は日曜日・祝日です。 で、質問は出席・欠席の合計数を出すための方法です。 今は出席合計欄に=COUNTBLANK(B3:G3,I3:N3,…:X3)と、欠席合計欄に=COUNTA(B3:X3)と入力していますが、これだと出席合計欄の計算式を毎月直す必要があります。(日曜日を省くため) もっと簡単に合計数を出せる方法はありますでしょうか? Excel2000、WinMeです。 あ、日曜・祝日はセルを色で塗りつぶしています。 お願いします。

  • Access2003 クロス集計で集計値を四捨五入

    ☆以下のようなテーブルで、フィールド[ID]~[点数]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [クラス]  [科目]  [点数]     1     A     英語    11    2     B     英語    22    3     C     数学    33    4     A     国語    44   5     B     数学    55    6     C     国語    66    7     B     国語    77   8     C     英語    88     9     A     数学    99     =========================================== ☆上記のテーブルをクロス集計クエリで集計する ・フィールド[クラス]を行見出しに設定、 ・フィールド[科目]を列見出しに設定、 ・フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 =========================================== [クロス集計結果]   合計   英語  国語  数学       A  154   11    44    99        B  154   22    88    55     C  187   99    77    33  =========================================== [課題] クロス集計クエリで、集計値を四捨五入する (1) フィールド[クラス]を行見出しに設定、    フィールド[科目]を列見出しに設定、    フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 (2) クロス集計の値を、下1桁で四捨五入した値を表示する。   (3) 「合計」の値を、下1桁で四捨五入した値を表示する。 ※ クロス集計した合計値を、四捨五入した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]   合計   英語  国語  数学     A  150   10    40   100        B  150   20    80    60     C  190   90    70    30  ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のように、クロス集計クエリでの集計値を四捨五入して 表示させたいのですが、どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • エクセルの関数について質問です。

    以下のようなエクセルの表があります。 列:生徒氏名 行:生徒が履修する科目名 各セルに各生徒が履修する科目の開講曜日・時限       国語   算数   理科   社会   重複 生徒1   水1   木2        月3 生徒2   水3        火4 生徒3   月5   金4        月5 生徒4   金2   金2   火4 各生徒が履修する科目の曜日・時限が重複していないかを「重複」欄に表示できるようにしたいのですが、どのような関数を使えばよいでしょうか。 どうぞよろしくお願いします。

  • アクセス クロス集計と単純集計の齟齬について

    すみません、質問させてください。 アクセス2010を使用しています。 下記のような元の表があります。 ID 試験科目  試験形式    合否(1/0)  当該科目選抜試験参加(1/0) 1  国語    タイプ1    1        1 1 国語    タイプ2    0     1 1  国語    タイプ3    1     1 2  国語    タイプ1    0        0 2 国語    タイプ2    0     0 2  英語    タイプ1    0     1 ※学生は5教科のなかから任意の科目を最低1教科、最大5教科受験しています。 ※各教科には複数の試験形式があります。(例えば国語なら、国語の中でタイプ1~3の複数の試験がある)どれか一つのタイプの試験で合格すると、次の選抜試験に参加する「権利」を得ます。 ※選抜試験参加は任意(希望した者のみ参加)です。また、複数の教科で合格していても、選抜では一人一科目のみしか参加できません。(つまり、英語と国語で合格していても、どちらか一科目の選抜試験のみにしか参加できない。合格しても参加しない者もいる) ※同一教科の複数タイプの試験を受け、タイプ1合格、タイプ2不合格で、選抜試験に参加した場合、タイプ2のレコードにおいても選抜試験参加のフラグがたっている。 このような状況で下記のような集計をしました。 1、元の表から、クエリでID、科目、当該科目選抜試験参加を抜き出し、「固有のキー」をオンにし、科目別選抜試験参加者を重複抜きで抽出した一覧(表A)を作成。  選抜試験参加者を科目ごとに単純集計(集計1)。 2、元の表から、クエリでID、科目、合否=1のみを抜き出し、「固有のキ」ーをオンにし、科目別合格者(選抜試験未参加を含む)を重複抜きで抽出した一覧(表B)を作成。 3、複数の科目で合格した学生が、選抜試験に参加したのか、したとしたらどの教科の選抜試験に参加したのかを集計するクロス表として、   表AとBのクロス集計を行ない、   行=表Aの科目名でグループ化   列=表Bの科目名でグループ化   値=表Aの選抜試験参加フラグをカウント  として実行しました。 目的は下記のような、「国語に合格した生徒のうち、国語(もしくは他の各教科)の選抜に参加した生徒は何人か」がわかるようなクロス表(表C)を作ることです。             合格した科目      国語 英語 数学 理科 社会 選 国語 10 抜 英語 50 参 数学 1 加 理科 1 科 社会 20 目 大体それらしい数字が出たのですが、表Cの斜めの列=つまり国語で合格し国語の選抜を受けた生徒の数、と、集計1で集計した数が合いません。 何が問題なのでしょうか。 長い説明ですみませんが、どうぞご教示をお願いします。 当方Access素人で、SQLというのはどこに記述すればいいのかも、よくわかっていません。 具体的な操作を含めて教えてくださいますと大変助かります。

  • 成績の合計を集計するSQLを考えています。

    成績の合計を集計するSQLを考えています。 下記のようなテーブルをAccessで作成しました。 ID  科目 学期 中間 期末 学年 性別 0001  001  01  30   32  1  男子 0001  002  01  20  31  1  男子 0001  003  01  22  23  1  男子 0001  001  02  30  11  1  男子 0001  002  02  23  33  1  男子 0001  003  02  22  23  1  男子 ID  生徒を識別 科目 001=国語 002=数学 003=理科 学期 01=前期 02=後期 中間 科目のテスト結果を入力 期末 科目のテスト結果を入力 ※学期ごとに中間と期末があります。 下記のように学期別に同学年かつ同性の科目ごとの合計を集計する SQLを考えています。 期   性別  国語  理科  社会 前期  男子 200 250 300  前期  女子 110 200 340  後期  男子 150 230 360  後期  女子 170 250 350  学期別に集計をすることは出来たですが、さらに性別で分けることができませんでした。 アドバイスお願いします。 また、現在は SELECT [学年], iif( [学期]=1,"前期","後期") AS [学 期], Sum(IIf([科目]=1,[中間]+[期末],0)) AS [国 語], Sum(IIf([科目]=2,[中間]+[期末],0)) AS [数 学], Sum(IIf([科目]=3,[中間]+[期末],0)) AS [理 科] FROM テーブル名 GROUP BY [学年], [学期]; のようなSQL文を作成しました。

  • ACCESSでクロス集計風に表示したい

    以下の様なテーブルを 科目 テスト 得点 ------------------ 国語 1中間 50 国語 1期末 60 国語 2中間 55 国語 2期末 65 国語 3期末 70 英語 ・   ・  ・  ・   ・  ・  ・   ・ 数学 1中間 70 数学 1期末 80 数学 3中間 75 数学 2期末 70 数学 3期末 85 以下のような表形式で表示したいと考えてます。    1中間 1期末 ・ ・ 2期末 3期末 国語  60  55  ・ ・  65  70 英語   ・   ・   ・ ・  ・   ・ 数学  70  80  ・ ・  70  85 クロス集計クエリで見た目は上記の表形式になったのですが、 表示されるデータシート?で値の編集が出来ませんでした。 (集計結果なので当然?) 科目及びテストは今後追加される可能性が高いので テーブルまたはフォームを固定で持つことは出来ません。 何か良い方法はないでしょうか?

  • エクセル:月や週ごとの集計

    エクセルで A列に日付、B列に曜日、C列に商品の数量があります(2年分が連続で入力されています) このシートで曜日ごとの集計(例えば9月4日から9月9日までの合計)や 7月だけの合計を出す為の関数か機能はありますか WIN xp エクセル2003

  • Excelでの集計表の作り方

    Excelで1ヶ月の集計表を作っていますがどうしてもわからない事があります。まず縦に1ヶ月分の日付を入れて横に純売上(B列)と消費税(C列)と総売上(D列)の表を作りました。日付は月を入力すると自動で変わる様にして月末も30日までの月は最後のセルも空白になる様に、土日祝は曜日の文字の色も変わります。その後が問題なんですが、曜日毎の集計を自動計算するだけならSUMIF関数ですぐに出来るんですが日祝の合計を1つのセルに集計させたいんです。月によって祝日の曜日も変わりますしどうしてもその方法がわかりません。説明が下手で申し訳ありませんがわかる方がいればお願いします。

  • 各週ごとに集計したいのですが

    一応検索をしましたが見つからなかったので質問します。 一応下記のような表を作っているのですがここから各週の 集計をしたいのです。   日付 曜日  A   B   C  合計   1   土    2   日   3   月 1   3       4   4    火  2   2    2   6    5   水     4       4   6   木  1   1    1   3   ・   ・   ・    各週の集計表 月  火  水  木  金      第1週   第2週   第3週   第4週   第5週  上の表の合計を下の集計表へ転記させたいのですが  曜日ごとに組み込む方法がよくわかりません。  曜日はWEEKDAY関数で1から7までで表せますが、第  1週、第2週と正確に転記させる方法がわかりません。  関数を調べましたがこちらの要求どおりに動いてく  れる関数は見つかりませんでした。もしかしたらマ  クロを作らなければならないのかもしれませんがVBA  は良くわかりません。  よろしくお願いします。

  • 素人目に見事なプログラム。

    public class test11 { public static void main(String[] args) { int[] [] points = new int[4][10]; points[0] = new int[] { 27, 53, 82, 77, 37, 61, 84, 72, 25, 91 }; points[1] = new int[] { 54, 76, 96, 39, 18, 45, 89, 92, 68, 88 }; points[2] = new int[] { 54, 69, 81, 57, 49, 67, 76, 81, 67, 89 }; for (int i = 0; i < points[0].length; i++) { points[3][i] = points[0][i] + points[1][i] + points[2][i]; } for (int i = 0; i<points[0].length; i++) { System.out.println("出席番号" + (i + 1) + "番の生徒の成績"); System.out.println("国語 :" + points[0][i]); System.out.println("数学 :" + points[1][i]); System.out.println("英語 :" + points[2][i]); System.out.println("合計 :" + points[3][i]); System.out.println("-----"); } } } 実行結果 C:\WORK>javac test11.java C:\WORK>java test11 出席番号1番の生徒の成績 国語 :27 数学 :54 英語 :54 合計 :135 ----- 出席番号2番の生徒の成績 国語 :53 数学 :76 英語 :69 合計 :198 ----- 出席番号3番の生徒の成績 国語 :82 数学 :96 英語 :81 合計 :259 ----- 出席番号4番の生徒の成績 国語 :77 数学 :39 英語 :57 合計 :173 ----- 出席番号5番の生徒の成績 国語 :37 数学 :18 英語 :49 合計 :104 ----- 出席番号6番の生徒の成績 国語 :61 数学 :45 英語 :67 合計 :173 ----- 出席番号7番の生徒の成績 国語 :84 数学 :89 英語 :76 合計 :249 ----- 出席番号8番の生徒の成績 国語 :72 数学 :92 英語 :81 合計 :245 ----- 出席番号9番の生徒の成績 国語 :25 数学 :68 英語 :67 合計 :160 ----- 出席番号10番の生徒の成績 国語 :91 数学 :88 英語 :89 合計 :268 ----- いつも大変お世話になっております。 教えてもらってばかりで恐縮です。 上記、Javaプログラムの件。 どうしてこうなるのか解りません。 どなたか解説してくれませんか? 真夜中にすみません。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • Java

専門家に質問してみよう