正常班的上班總人數
白色且為空格(裡面沒寫任何文字)就+1
加班總人數
藍色且裡面「包含」 OT 兩字(有一些 OT8, OT9)就+1
這樣對嗎?
Option Explicit
Const CellDay1 = "B2" '第一天的儲存格位址
Const colorWhite = -4142 '白色
Const colorBlue = 37 '藍色
Global gMaxRow As Integer
Sub Main()
Dim savedPos
gMaxRow = Range("A65535").End(xlUp).Row
Range(CellDay1).Select
Do While ActiveCell.Value <> ""
savedPos = ActiveCell.Address
ActiveCell.Offset(1, 0).Select
Call OneDay
Range(savedPos).Select
ActiveCell.Offset(0, 1).Select
Loop
Call setRowHeadings
End Sub
'處理一天(一欄)
Private Sub OneDay()
Dim cNormal, cOT, cOT8, cOT9 As Integer
Do Until ActiveCell.Row > gMaxRow
Debug.Print "R" & ActiveCell.Row & "C" & ActiveCell.Column & " color=" & ActiveCell.Interior.ColorIndex
If ActiveCell.Interior.ColorIndex = colorWhite Then
If ActiveCell.Value = "" Then
cNormal = cNormal + 1
End If
ElseIf ActiveCell.Interior.ColorIndex = colorBlue Then
If InStr(1, ActiveCell, "OT") <> 0 Then
If InStr(1, ActiveCell, "OT8") <> 0 Then
cOT8 = cOT8 + 1
ElseIf InStr(1, ActiveCell, "OT9") <> 0 Then
cOT9 = cOT9 + 1
Else
cOT = cOT + 1
End If
End If
End If
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = cNormal
ActiveCell.Offset(1, 0).Value = cOT
ActiveCell.Offset(2, 0).Value = cOT8
ActiveCell.Offset(3, 0).Value = cOT9
ActiveCell.Offset(4, 0).Value = cNormal + cOT + cOT8 + cOT9
End Sub
'設定列標題
Private Sub setRowHeadings()
Range("A65535").End(xlUp).Select
ActiveCell.Offset(1, 0) = "正常班"
ActiveCell.Offset(2, 0) = "OT"
ActiveCell.Offset(3, 0) = "OT8"
ActiveCell.Offset(4, 0) = "OT9"
ActiveCell.Offset(5, 0) = "總人數"
End Sub
執行前有三個地方要請你自己調整
最前面的
Const CellDay1 = "B2" '第一天(日期)的儲存格位址,就是「1 的儲存格位址」
Const colorWhite = -4142 '白色, 請參照下面說明設定
Const colorBlue = 37 '藍色, 請參照下面說明設定
由於不確定你使用的顏色是什麼
程式執行時會顯示每一格的顏色如下圖
再請你自己設定「白色」和「藍色」即可