使用数组计算彩色单元格

时间:2015-06-30 22:01:00

标签: excel vba excel-vba multidimensional-array

目前我的工作表中有不同颜色的单元格,如下所示:

[电子表格] http://imgur.com/na6nvNH

我使用数组来计算每列的彩色单元格。这是我的代码片段:

Dim difference(0 To 41) As Long
For Each mycell In ActiveWorkbook.Worksheets("Differences").UsedRange
Dim col As Long
col = mycell.Column
 If ActiveWorkbook.Worksheets("Differences").Cells(mycell.Row,mycell.Column).Interior.Color = vbRed Then
difference(col) = difference(col) + 1
End If
Next mycell

Sheets("Summary").Cells(47, 3) = difference(0)
Sheets("Summary").Cells(48, 3) = difference(1)
Sheets("Summary").Cells(49, 3) = difference(2)
etc.

其中列出了每列有色单元格的数量。我需要帮助打破这个,所以我可以创建一个表格,显示每个部门的彩色单元格数量。我不知道怎么做!

为了更容易查看,我希望创建它:

[FinalSheet] http://imgur.com/i6W60m7

我应该补充一点:工作表中的行数可能会有所不同,它们也可能因部门而异

尝试应用从第一个部门开始的列过滤器,然后在应用过滤器后计算有色单元格,但是由于我在查看上面代码中的每个单元格,结果仍然是每列。

2 个答案:

答案 0 :(得分:0)

使用多维数组似乎要容易得多,所以你会得到Array(4,7),所以有些sudo代码可能看起来像。我可以做真正的代码,但你似乎知道你在做什么。

Select Case mycell.row
   Case 1 
      Array(1,Col) = Array(1,Col) + 1
   Case 2 
      Array(1,Col) = Array(1,Col) + 1
   Case 3
      Array(2,Col) = Array(2,Col) + 1
end select

多维数组的技巧是把它想象成一个电子表格,(2,2)= 3行,3列...(3因为数组从0开始)它的美妙之处在于你这样做就是这样提取数据你只需要一个双循环

For I =0 to Ubound(Array)
     For II = 0 to Ubound(Array,2)
          Cell(I,II).Value = Array(I,II)
     next
next

答案 1 :(得分:0)

对于那些寻找答案的人来说,这是一个相当长的方法。但是,我应用了一个过滤器,然后将范围设置为仅显示可见单元格而不是整个工作表中使用的范围