- ベストアンサー
Excelで、出勤人数の集計方法は?
現在、私の手元に工場の作業日報のデーターベースがあります。 いつ、誰が、どんな作業を、何時から、何時まで行っていたかというデーターが約半年分、行数にして1万5千行ほどあります。 このデーターベースから、日付毎の出勤人数を集計したいのですが、集計やピポットテーブルを使用しても上手く往きません。 A列に日付、B列に作業者名、C列以降に作業名や時間が入力されているのですが、一人が一日に複数の作業を行った場合、同じ日付に同じ作業者名が幾つもダブって入力されています。 集計やピポットテーブルを使用しても、例えば同じ日付に同じ作業者名が3回登場すると、1とカウントせず、3とカウントしてしまいます。 このように、データーの個数を集計するのではなく、データーが何種類有るかを集計する方法は無いのでしょうか。詳しい方、どうかご教授下さい。 では。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フィルターのオプションを使ってう重複するデータを無視してから、ピボットテーブルを使われてはいかがでしょうか。 データの入っている同じシートの右側に日付と作業者の項目を作っておき、データ/フィルタのオプションからリスト範囲、検索抽出条件、抽出範囲を指定し(詳しくはHELP参照してください)、重複するレコードは無視するにチェックを入れてokとすれば、同じデータはひとつとして抽出してくれます。 それから、ピボットテーブルを作ると所望のデータが得られると思います。 ただし、直接、データを加工するので実行前には万一の事故を防ぐため、バックアップは必ずとって置くことをお勧めします。 ただ、16千行あると、アクセスでやるかどうかの境目ですね。 データの定義と決まりごさえきちっとしておけば、リンクなどでエクセルのデータがそのまま使えますので、ご検討ください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
何となく手探りで見つけたのですが、下記で良いと思います。十分テストしてみて下さい。 (例データ)A1:C12 D列は初め無いものとして見て(入力して)ください。 (A列) (B列) (C列) (D列) 日付 氏名 計数 2004/6/1 山田 12 0.5 2004/6/1 佐藤 9 0.5 2004/6/1 木下 8 1 2004/6/1 佐藤 3 0.5 2004/6/1 山田 2 0.5 2004/6/2 木下 3 1 2004/6/2 山田 5 0.5 2004/6/2 大島 6 0.5 2004/6/2 近藤 11 1 2004/6/2 大島 9 0.5 2004/6/2 山田 5 0.5 2004/6/3 今野 4 1 2004/6/4 今野 6 1 (関数式) D列D2セルに =1/SUMPRODUCT(($A$2:$A$14=A2)*($B$2:$B$14=B2)) と入れて、D14まで式を複写してください。 $14の部分は実際のケースでは最下行に置換えてください。 結果は上記のD列のようになります。 D列のD15(例えば)に=SUM(D2:D14)を出すと9になります。 これは 6/1山田 佐藤 木下 6/2木下 山田 大島 近藤 6/3今野 6/4今野 の数を数えたことになります。 1日に例えば3回出てくる人は、毎(それぞれの)行に(出現頻度の逆数)1/3をセットして、1人当たりで、1日の和が1になるようにしています。
お礼
早速のご回答、ありがとうございました。 ご教授頂いた方法を試してみたのですが、ダブった数によっては端数がでてしまうのと、演算時間がすごく掛かってしまう(pen4 2.2GHzで5分以上)ので、今回は#1さんの方法でやってみようと思います。 しかし、こんな考え方もあるのですね。大変参考になりました。
お礼
早速ご回答頂き、ありがとうございます。 ご教授頂いた方法で、どうにか解決する事が出来ました。 どうもお世話になりました。