- ベストアンサー
日曜、祭日をカウントする
勤務表をweekday関数で月間カレンダーをsheet1に作成しております。 別のshee2に祭日を作成して、条件つき書式でsheet1に日曜・祭日は赤になるように設定しました。赤色をカウント(VBAで作成)しようしても、条件付き書式では、赤をカウントしません。セルを選択後、塗りつぶしたセルはカウントしますが。 祭日.日曜日の勤務時間合計を計算したいのです。 row1列に2009/4/1から2009/4/30まで入力 row2列に(=text(A1,"aaa")で曜日入力してます。 row3列に時間を入力しております。 column1行には担当者指名入力しています。 日曜祭日にはrow1で日曜。祭日は赤に塗りつぶします。 よろしくお願いします。 ※条件つき書式の塗りつぶしの色とセルの塗りつぶしは違うのでしょうか?回答いただいた自作のFunction関数を使用しました。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>毎日曜・毎祝祭日には出勤と確定しておりませんので、row3列の時間が記入されているセルだけ、合計したいのですが、可能でしょうか。 >※もう少し詳細になりますが、row1セルの下にはrow2(午前・午後)のセルも作成しております。(単価が異なるため) う~ん、row1セルやrow2などの表現がEXCEL的ではないため理解しにくい 分かる範囲で 1行目、B列以降右方向:日付 2行目、B列以降右方向:AM/PM? 3行目、B列以降右方向:曜日? A列、4行目以降下方向:担当者氏名 出力先も無いので、Msgboxへ出力 Sub test() Dim i, ii, iii, 休日数 For i = 4 To Range("a65536").End(xlUp).Row 休日数 = 0 For ii = 2 To Cells(i, Columns.Count).End(xlToLeft).Column If Cells(i, ii).Value <> "" Then If Cells(3, ii).Value = "日" Then 休日数 = 休日数 + 1 Else For iii = 1 To 20 If Cells(1, ii).Value = Worksheets("sheet2").Cells(iii, 1).Value Then 休日数 = 休日数 + 1 End If Next iii End If End If Next ii MsgBox Cells(i, 1).Value & "さん 休日出勤数:" & 休日数 Next i End Sub
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
#1さんの回答通りだと思います VBAでカウントする必要があるなら、祭日.日曜日の色づけもVBAで判断して色を付ければ、カウントするのは簡単だと思う しかし、そうもいかないのかな 関数であれば 日曜のカウント =COUNTIF(B1:B30,"日") 祭日のカウント(shee2に祭日の表があり、A列に日付があるものとします) =SUMPRODUCT((MONTH(Sheet2!A1:A20)=4)*1) のような関数になると思います(一例ですが) =COUNTIF(B1:B30,"日")+SUMPRODUCT((MONTH(Sheet2!A1:A20)=4)*1) ではダメでしょうか? あくまでもVBAでやりたいのであれば こんな方法もあります Sub test() MsgBox Evaluate("COUNTIF(B1:B30,""日"")+SUMPRODUCT((MONTH(Sheet2!A1:A20)=4)*1)") End Sub 参考になれば
- fujillin
- ベストアンサー率61% (1594/2576)
普通にVBAで取得しても色の設定は初期設定の色しか取れないみたいですね。 過去の質問に同様のものがあり、条件付書式の内容を調べて、条件を判定して色を求める(条件付書式と同じことをやっている)方法が出ています。 http://okwave.jp/qa1455002.html ただし、ご質問の場合は、↑の方法でやる(=1行目の日付の色を見る)よりも、2行目の曜日とsheet2とを直接調べて日・祭日を判定してしまったほうがはるかに簡単そうですね。
補足
hige_082様 これも説明不足でした。 日曜・祭日には、単価が変わりますので、日曜・祭日の勤務時間の合計が必要になります。 ただ、毎日曜・毎祝祭日には出勤と確定しておりませんので、row3列の時間が記入されているセルだけ、合計したいのですが、可能でしょうか。 ※もう少し詳細になりますが、row1セルの下にはrow2(午前・午後)のセルも作成しております。(単価が異なるため) よろしくお願いします。