对于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
你能帮帮我吗?我有点卡在这里!谢谢大家周五的快乐!答案 0 :(得分:1)
只需在If
声明中添加其他条件
If datax.Interior.ColorIndex = xcolor And LCase(datax.Offset(0,-1).Value) = "apple" Then
我使用LCase
同时获取Apple
和apple
...
当然,当您使用带有负值的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