• ベストアンサー

勤務表の作り方

同じ質問あるかもなのですが、発見できなかったので質問させていただきます。 会社で勤務表を作っているのですが、1ヶ月1シートを 使い、A列に日付・B列にやったこと(会議や資料作成等)・C列に開始時間・D列に 終了時間を記入します。 1ヶ月続けて書くと、日によっては会議にも出て営業も 行って資料も作って・・・となると、同じ日付がダーっと 続くことになります。 そこで平日休暇や土日祝日を除いたりして、1ヶ月で何日 勤務したかを計算するにはどのようにすればいいのか 教えてください。 つまり、A列の中に何種類のモノがあるか知りたいの ですが、やり方が分かりません。 もう一つ、1ヶ月単位のシートですが、1週間毎に 会議は計何時間・・・というのを知りたいのですが、 イイ方法はあるでしょうか? 1ヶ月丸々の会議時間や、就労時間はDSUMで求める ようにしているのですが、更に細かく、その1ヶ月の 内で1週間毎の集計を出したいです。 シートを1週間毎にすると、膨大な数になるので できれば1ヶ月にシート1枚だと嬉しいです。 説明分かりにくいと思うのですが、よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

>つまり、A列の中に何種類のモノがあるか知りたいの >ですが、やり方が分かりません。 土日祝日は入力がないものとして =SUMPRODOCT(1/COUNTIF($A$2:$A$100,$A$2:$A$100&"")) >その1ヶ月の内で1週間毎の集計を出したいです。 1週間の単位は月曜~金曜として =SUMPRODUCT((INT((DAY($A$2:$A$100)-WEEKDAY($A$2:$A$100,3))/7)=[週])*NOT(ISERR(FIND("会議",$B$2:$B$100)))) ※月曜日を週の初めとするので、[週]の部分次の数式のセルを参照してください。 第1週=ROW(A1)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2 第2週=ROW(A2)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2 第3週=ROW(A3)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2 第4週=ROW(A4)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2 第5週=ROW(A5)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2

ken460-y
質問者

お礼

どうもありがとうございます! SUMPRODOCTを使うんだろうなーって とこまでは分かったのですが、エラーが出て 使いこなせませんでした。やってみます。 1週間の集計方法も、知らない関数(INT)が ありますが勉強してみますね。 どうもありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1にも書いておられますが、質問があいまい。 >説明分かりにくいと思うのですが・・ というより、解決の為に何が必要かが整理されておらず、判っていないため、必要な項目の説明が、抜け落ちている。それを勉強して、資料そのものを、解決しやすい形に近付けることも必要。 エクセル以前にするべきこと考えるべきこと、表現すべきことが有るということ。 必要な条件は残し、必要でない煩雑さはカットした実例でも上げるのが判りやすいと思う。 >1ヶ月で何日勤務したかを 勤務した以外の日もA列に現れるのか。 ○このシートにはA氏以外B氏、C氏・・の情報も入っているのか それはどの列か ○土日・休日の日付もA列に現れるのか >1ヶ月で何日勤務したかを A氏は何日、B氏は何日、・・の別を出したいのか >会議は計何時間 「会議」「資料作成」など要約した、それだけの文字列が、どこかの列ににあるのか ーー 回答にも出ているように、ピボットが一番便利でしょう。 そのためには、入力の手間はかかるが、分類コードや要約文字列をデータとして、持つとかの工夫が必要かと思う。

ken460-y
質問者

補足

説明が分かりにくくてすみません。 補足しますと 1.この表には一人分しか入っていません。 2.土日祝日にも出勤した日があるし、また   突発的に平日休んだ日もあるので、A列に   入る日付=出勤日ということで、A列に   何種類の日付が入るかをカウントできれば   出勤日数が分かると思い、種類の数をカウント   する関数が知りたかったんです。

  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.2

ピボットテーブルを使ってみたらどうでしょう? E列に所要時間を記載します。 E2セルに =D2-C2 と式をいれ、E2セルのフィルハンドルをダブルクリックします。 表内のどれかのセルを一つ選択して、「データ」-「ピボット~」を選択します。 「ピボットテーブル ウィザード」の3/3で新規のワークシートか既存のワークシートを選択できます。 既存のワークシートを選択して、表内の空いたセルを選択すればそこに作成されます。 H列あたりのセルを選択すれば、邪魔にならないでしょう。 行のフィールド~に「日付」を、列のフィールドに「仕事内容」をドラッグします。 データアイテムに「所要時間」をドラッグします。 >そこで平日休暇や土日祝日を除いたりして、1ヶ月で何日勤務したかを計算 意味が良く判らないのですが、この表にある日付はなんらかの仕事をしているのですから、 勤務しているはずですね。ピボットテーブルでは、日にちごとにまとめられていますから、 これの合計でよいと思うのですが・・・。 COUNTA関数で計算できると思います。 さて、所要時間が「データの個数」になっているかも知れません。 右クリックして、「フィールドの設定」で「集計の方法」を「合計」にします。 シリアル値が表示されますので、範囲指定して「書式」-「セル」の「表示形式」タブで 「分類」を「「時刻」にします。 「日付」欄を右クリックして、「グループとアウトラインの設定」-「グループ化」を選択します。 「単位」に「月」が選択されていると思います。クリックすると解除になります。「日」を選択します。 (日だけが反転した状態にします) 下の日数の欄を「7」にします。 開始日は元の表の最初の日付になっていますが、月曜日からの1週間にしたければ、 「開始日」を月曜日の日付にします。 今月であれば3日が月曜日ですので、「2006/7/3」にします。 このように週単位で集計されます。 <2006/7/3 2006/7/3 - 2006/7/9 2006/7/10 - 2006/7/16 2006/7/17 - 2006/7/20

ken460-y
質問者

お礼

ピポットテーブルなんて使ったことなかったので、 びっくりでした。 早速勉強して、やってみます。 どうもありがとうございました。

回答No.1

>そこで平日休暇や土日祝日を除いたりして 土日であるかは、weekday関数で得られます。 平日休暇=有給休暇等のことですよね? その情報は、どこに持っているのですか? 祝日の情報は、どこにどのようにして持っているのですか? >A列の中に何種類のモノがあるか知りたい 有給や祝日の情報保持方法が分かりませんが、土日だけを除いた日数なら、作業用の列を作り、以下のような式を作り、sumで合計を求めたら日数が得られます。 先頭行・・・セルA2とすると =IF(WEEKDAY(A2,2)>=6,0,1) 2行目以降は、下記をコピー =IF(WEEKDAY(A3,2)>=6,0,IF(A2<A3,1,0)) >1週間毎に 月初、月末の週の扱いはどうするのですか? もっと具体的に説明してくれないと、具体的な回答はできません。

ken460-y
質問者

お礼

土日を調べる関数があるなんて初めてしりました。 どうもありがとうございました。