用EXCEL製作一份工作日曆,塗顏色的單元格表示休息日(共有4種顏色,深紅一種,淺紅2種,橙色一種),白色表示工作日,現在需要統計每個月休息日的數量,如何實現?
在EXCEL中按條件選擇數據,通常使用“篩選”功能,而且在EXCEL 2010中已經具備了按顏色篩選的功能,但是這種篩選只能在同一列數據中進行,對於不同列的數據就無能爲力了。考慮用VBA實現,單元格的顏色信息對應哪個屬性,經過一番查找,我終於找到了,該屬性位於Sheet1.Cells(1, 1).Interior.Color,有了這個屬性,後面的工作就很簡單了,遍歷整個區域,比對顏色信息,將每個月的休息日記錄在一個數組中。
源代碼如下:
Sub workday()
Dim wk(1 To 12)
'記錄工作日的數組
Dim w1
w1 = 0
For n = 1 To 12
wk(n) = 0
Next
For i = 4 To 10
For k = 2 To 54
With Sheet1.Cells(i, k).Interior
If .Color = 10066431 Or .Color = 255 Or .Color = 10198015 Or .Color = 26367 Then
'讀取顏色值,並進行判斷
m = Month(Sheet1.Cells(i, k).Value)
'表中的日曆實際是日期格式,可以用Month()函數讀取該日期屬於哪一個月,計入對應的wk()數組中
wk(m) = wk(m) + 1
End If
End With
Next
Next
For t = 1 To 12
Debug.Print t, wk(t)
Next
'輸出
End Sub