【初月無料キャンペーン中】gooドクター

office2007を使用しています。
上司に週間で出勤日数と勤務時間を報告することになりました。

今までは月間の勤務時間と日数を報告するだけでよかったので、
単純に時間は入力した値をsum関数で、日数は入力された時間のセルをcount関数で足し算、と集計していました。

今後は指定した期間(曜日で集計し、1日~末締めのため毎月変動する)の時間と日数を報告します。
期間の日付は

時間は累計した値から2週目なら1週目の値を引き算、3週目は2週目と1週目の値を引き算・・・
で求められました。

では、日数のカウントはどうすればよいんでしょうか?
count関数を使ってできるんでしょうか?

よろしくお願いいたします。

「Excelで特定の期間の出勤日数を割り出」の質問画像
gooドクター

A 回答 (3件)

お示しの表が有るとして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セルを選択してから右横方向にドラッグコピーすれば完成です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

悩んだ挙句自力でcountifとoffsetを使う方法を発見しました。

=COUNTIF((OFFSET($C$6,0,0,1,BR4)),">0")

で、できました。

へたくそな説明に丁寧にご説明いただいたのでBAにさせて頂きます。

お礼日時:2012/12/21 12:46

回答No2です。

最後の文章では次のように下方へのドラッグコピーを書き忘れました。一度こちらが指定した通りで新しいシートで試験してください。

AI5セルとAJ5セルを選択してから右横方向にドラッグコピーしたのちに下方にもドラッグコピーすれば完成です。
    • good
    • 0

問題はナニ??


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

この回答への補足

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

補足日時:2012/12/21 10:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このカテゴリの人気Q&Aランキング