用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

发布了31 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ccozkf/article/details/103888804
今日推荐