Excel VBA:使用单元格颜色进行计算

时间:2014-07-10 22:33:32

标签: excel vba

我真的开始学习如何使用VBA而且我已经卡住了。我所拥有的是一张Excel表格,其中包含大量库存,在该行的所有列上都有红色单元格,我想要打印这些列。

换句话说,如果单元格颜色为红色,我最终希望它获取该列的第一个单元格(标题),并将该值附加到字符串连接中。而且我希望它为那一行中的所有红细胞做到这一点。例如,如果一行中的红色单元格位于“重置”和“时间”列中,我希望该行中的最后一列显示“重置:20,时间:30”。

所以我开始的只是尝试逐个单元格逐行进行,以便我可以计算红色单元格的数量并尝试将它们放在每一行的末尾。搞砸了,我注意到下面的代码会自动将x放在相邻的单元格中,因为它会增加而不是像我预期的那样保持一个单元格。我目前也有单元格(行,60)因为列总是相同的,但它不喜欢我使用变量行。

    Sub CellColorRed()
'
' CellColorRed Macro
' Take headers if color is red
'
' Keyboard Shortcut: Ctrl+n
'
    Dim rng As Range, cell As Range, row As Range, x As Integer
    Set rng = Range("F2:BG9")
    For Each row In rng.Rows
        For Each cell In rng.Cells
        x = 0
            If cell.Interior.ColorIndex = 3 Then
                x = x + 1
            End If
            cell(row, 60) = x
        Next cell
    Next row
End Sub

1 个答案:

答案 0 :(得分:0)

Sub GetRedCells()

    Dim rng As Range, cell As Range, row As Range, x As Integer
    Dim msg as String, sep as string

    Set rng = Range("F2:BG9")
    For Each row In rng.Rows
        msg=""
        sep=""

        For Each cell In row.Cells
            If cell.Interior.ColorIndex = 3 Then
                msg = msg & sep & Cells(1, cell.Column).Value & _
                      ": " & cell.Value 
                sep = ", "
            End If
        Next cell

        row.cells(60) = msg

    Next row

End Sub