如果相邻单元符合标准,则根据颜色计数单元格

时间:2016-09-16 07:53:01

标签: excel vba

对于VBA比我更熟练的人来说,这个问题可能很容易。我的问题是我想计算包含特定颜色的单元格,但前提是它符合相邻单元格中的条件。如果我只想基于颜色计算,我发现了如何做到这一点,这就是它的样子:

Function CountCcolor(range_data As Range, criteria As Range) As Long
Dim datax As Range
Dim xcolor As Long

xcolor = criteria.Interior.ColorIndex

For Each datax In range_data
If datax.Interior.ColorIndex = xcolor Then
    CountCcolor = CountCcolor + 1
End If
Next datax
End Function

因此,在我的示例中,如果相邻单元格A列等于Apple,我希望将列B中的单元格用绿色计数。 Example image

你能帮帮我吗?我有点卡在这里!谢谢大家周五的快乐!

2 个答案:

答案 0 :(得分:1)

只需在If声明中添加其他条件

即可
If datax.Interior.ColorIndex = xcolor And LCase(datax.Offset(0,-1).Value) = "apple" Then

我使用LCase同时获取Appleapple ...

当然,当您使用带有负值的Offset时,您必须确保不将其应用于靠近工作表末尾的单元格(在本例中为第一列)或者你会收到错误。

如果您希望单元格与datax在同一行,但列A,请使用datax.Row获取行号:

yoursheet.Cells(datax.Row, 1).Value

yoursheet是您正在处理的工作广告(例如data_range.Sheet)。如果您愿意,可以用"A"替换列索引(我更喜欢使用数字)。

答案 1 :(得分:0)

以下是将单元格放在同一行和第一列的更多方法:

datax(, 2 - datax.Column)         ' no auto-complete
datax.Offset(, 1 - datax.Column)  ' auto-complete
datax.EntireRow.Cells(1)          ' no auto-complete 
datax.EntireRow.Resize(, 1)       ' auto-complete