こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

日曜、祭日をカウントする

勤務表をweekday関数で月間カレンダーをsheet1に作成しております。
別のshee2に祭日を作成して、条件つき書式でsheet1に日曜・祭日は赤になるように設定しました。赤色をカウント(VBAで作成)しようしても、条件付き書式では、赤をカウントしません。セルを選択後、塗りつぶしたセルはカウントしますが。
祭日.日曜日の勤務時間合計を計算したいのです。

row1列に2009/4/1から2009/4/30まで入力
row2列に(=text(A1,"aaa")で曜日入力してます。
row3列に時間を入力しております。
column1行には担当者指名入力しています。
日曜祭日にはrow1で日曜。祭日は赤に塗りつぶします。
よろしくお願いします。

※条件つき書式の塗りつぶしの色とセルの塗りつぶしは違うのでしょうか?回答いただいた自作のFunction関数を使用しました。

投稿日時 - 2009-04-24 21:08:35

QNo.4905981

すぐに回答ほしいです

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

>毎日曜・毎祝祭日には出勤と確定しておりませんので、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

投稿日時 - 2009-04-27 14:28:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.2

#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

参考になれば

投稿日時 - 2009-04-24 22:55:12

補足

hige_082様
これも説明不足でした。
日曜・祭日には、単価が変わりますので、日曜・祭日の勤務時間の合計が必要になります。
ただ、毎日曜・毎祝祭日には出勤と確定しておりませんので、row3列の時間が記入されているセルだけ、合計したいのですが、可能でしょうか。
※もう少し詳細になりますが、row1セルの下にはrow2(午前・午後)のセルも作成しております。(単価が異なるため)

よろしくお願いします。

投稿日時 - 2009-04-26 22:51:39

ANo.1

普通にVBAで取得しても色の設定は初期設定の色しか取れないみたいですね。

過去の質問に同様のものがあり、条件付書式の内容を調べて、条件を判定して色を求める(条件付書式と同じことをやっている)方法が出ています。
 http://okwave.jp/qa1455002.html

ただし、ご質問の場合は、↑の方法でやる(=1行目の日付の色を見る)よりも、2行目の曜日とsheet2とを直接調べて日・祭日を判定してしまったほうがはるかに簡単そうですね。

投稿日時 - 2009-04-24 22:16:16

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-