用VBA統計塗色單元格的信息

用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章