• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで特定の期間の出勤日数を割り出す。)

Excelで特定の期間の出勤日数を割り出す方法とは?

このQ&Aのポイント
  • Excelを使用して特定の期間の出勤日数を割り出す方法について解説します。今までは月間の勤務時間と日数を報告するだけでしたが、今後は指定した期間の時間と日数を報告する必要があります。時間は累計した値から前の週の値を引くことで求めることができますが、日数のカウント方法について疑問があります。count関数を使用して日数をカウントすることができるのかについても説明します。
  • Excelを使用して特定の期間の出勤日数を割り出す方法について詳しく説明します。以前は月間の勤務時間と日数を報告していましたが、今後は指定した期間の時間と日数を報告する必要があります。時間は累計した値から前の週の値を引くことで求めることができますが、日数のカウントについてはcount関数を使用することができます。具体的な使い方についても解説します。
  • Excelを使って特定の期間の出勤日数を割り出す方法を教えてください。今までは月間の勤務時間と日数を報告するだけでしたが、今後は指定した期間の時間と日数を報告する必要があります。時間は累計した値から前の週の値を引くことで求めることができますが、日数のカウント方法についてはcount関数を使用することができます。具体的な使い方や注意点についてもご説明します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

お示しの表が有るとしてA2セルには該当する年月を表示させることにして今年の12月でしたら2012年12月と入力します。パソコンは自動的に判断して2012/12/1と表示されます。A2セルを右クリックして「セルの書式設定」から「表示形式」の「ユーザー定義」で種類の窓に yyyy"年"mm"月" と入力してください。2012年12月と表示されます。 B3セルとB4セルは結合セルで1と入力し、C3セルとC4セルには2と入力します。 二つの結合セルを選択してからAF3セルまで右横方向にドラッグコピーします。これで1から31までが表示されます。 5行目から下方には実際の時間が入力されることになりますね。 解析結果の表示ですがAG3セルには日数、AH3セルには時間数と入力します。 AG5セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B5:AF5)=0,"",COUNT(B5:AF5)) AH5セルには次の式を入力したのちに「セルの表示形式」の「表示形式」でユーザー定義」にして種類の窓には [h]:mm と入力してOKします。その後に下方にドラッグコピーします。 =IF(AG5="","",SUM(B5:AF5)) AI2セルには第1週と入力してからAI2セルとAJ2セルを結合セルとします。その後にAS2セルまで右横方向にドラッグコピーします。第6週までが表示されます。 AI3セルには次の式を入力してAT3セルまでドラッグコピーします。 =IF($A$2="","",IF(COLUMN(A1)=1,1,IF(IF(MOD(COLUMN(A1),2)=0,7*ROUNDUP(COLUMN(A1)/2,0)-WEEKDAY($A$2)+1,7*ROUNDUP(COLUMN(A1)/2,0)-WEEKDAY($A$2)-5)>DAY(DATE(YEAR($A$2),MONTH($A$2)+1,0)),IF(OR(AH3="",AH3=DAY(DATE(YEAR($A$2),MONTH($A$2)+1,0))),"",DAY(DATE(YEAR($A$2),MONTH($A$2)+1,0))),IF(MOD(COLUMN(A1),2)=0,7*ROUNDUP(COLUMN(A1)/2,0)-WEEKDAY($A$2)+1,7*ROUNDUP(COLUMN(A1)/2,0)-WEEKDAY($A$2)-5)))) これで週の初めの日と終わりの日にちが交互に表示されます。月の最終日までが表示されます。 AI4セルには日数、AJ4セルには時間と入力してからAI4セルとAJ4セルを選択して右横方向にドラッグコピーします。 AI5セルには次の式を入力してAJ5セルまで隣にドラッグコピーします。 =IF(OR($AH5="",AI$3=""),"",IF(MOD(COLUMN(A1),2)=1,COUNT(INDEX($B5:$AF5,MATCH(AI$3,$B$3:$AF$3,0)):INDEX($B5:$AF5,MATCH(AJ$3,$B$3:$AF$3,0))),SUM(INDEX($B5:$AF5,MATCH(AH$3,$B$3:$AF$3,0)):INDEX($B5:$AF5,MATCH(AI$3,$B$3:$AF$3,0))))) AJ5セルを選択してから「セルの表示形式」で「ユーザー定義」の「種類」の窓には [h]:mm と入力してOKします。 AI5セルとAJ5セルを選択してから右横方向にドラッグコピーすれば完成です。

C-CUBE
質問者

お礼

ありがとうございます。 悩んだ挙句自力でcountifとoffsetを使う方法を発見しました。 =COUNTIF((OFFSET($C$6,0,0,1,BR4)),">0") で、できました。 へたくそな説明に丁寧にご説明いただいたのでBAにさせて頂きます。

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

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。最後の文章では次のように下方へのドラッグコピーを書き忘れました。一度こちらが指定した通りで新しいシートで試験してください。 AI5セルとAJ5セルを選択してから右横方向にドラッグコピーしたのちに下方にもドラッグコピーすれば完成です。

すると、全ての回答が全文表示されます。
回答No.1

問題はナニ?? 言い方を変えると、ナニが問題???

C-CUBE
質問者

補足

報告は毎週木曜日が締め切りですが、 12月は1日が土曜日なので、1日~6日の6日間、7日~13日の7日間・・・となります。 1月は1日が火曜なので1日~3日の3日間、4日~10日の7日間・・・になります。 月初めと月終わりは曜日の関係で集計する期間が変動します。 この変動する集計期間をExcel側で判断して入力されている時間をカウントして、 その期間の出勤日数を集計させたいんです。

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

関連するQ&A