楼主 0Mouse |
Q:如何统计指定区域中上一行为指定颜色下一行为红色的单元格数量呢? 问题截图:
A:可以借助宏表函数,也可以采用VBA完成统计。
方法1:借助宏表函数 思路:先利用宏表函数将单元格颜色转变成对应的数值再用COUNTIFS或SUMPRODUCT函数进行统计。 操作步骤: 1.单击Sheet2的B2单元格,按下Ctrl+F3,单击“新建”按钮,如下图所示新建名称“color”,单击“确定”按钮,再单击“关闭”按钮。
2.单击Sheet2的B2单元格,输入以下公式,右拉下拉至AM8单元格。- =Color
3.单击Sheet1的AH3单元格,输入以下公式,右拉下拉至AM8,完毕!- =COUNTIFS(Sheet2!$B2:$AF2,Sheet2!AH$2,Sheet2!$B3:$AF3,3)
或者- =SUMPRODUCT((Sheet2!$B2:$AF2=Sheet2!AH$2)*(Sheet2!$B3:$AF3=3))
方法2:VBA- Sub 符合条件的颜色单元格个数统计()
- Dim i%, j%, arr, brr(1 To 6), crr(1 To 100, 1 To 6), k%, m%, n%, x%
- ReDim arr(1 To 100, 1 To Range("AF1").Column - 1)
- For i = 2 To 100
- If Cells(i, 2).Interior.ColorIndex > 0 Then x = x + 1
- For j = 2 To UBound(arr, 2) + 1
- arr(i - 1, j - 1) = Cells(i, j).Interior.ColorIndex
- Next
- Next
- For k = 1 To 6
- brr(k) = Cells(2, Range("AG1").Column + k).Interior.ColorIndex
- For m = 2 To 100
- For n = 1 To UBound(arr, 2)
- crr(m - 1, k) = crr(m - 1, k) + IIf(arr(m - 1, n) = brr(k) And arr(m, n) = 3, 1, 0)
- Next
- Next
- Next
- [AH3].Resize(x - 1, 6).ClearContents
- [AH3].Resize(x - 1, 6) = crr
- Erase arr: Erase brr: Erase crr
- End Sub
附件: 统计指定区域中上一行为指定颜色下一行为红色的单元格数量.rar |