2016-03-08 58 views
1

有人能指出我正确的方向吗,我不知道如何最好地处理这个问题,以便解决我的问题并做我需要的工作。计数单元格值并存储在变量中供以后使用vba

我有一个excel文件,有三栏可以保存Green,Amber和Red的数据。对于每一行,它们可以具有所有相同的值或不同的值,每行的总值将是: - 如果三个值中的一个或多个值是红色,则所有值都是红色,如果没有红色和一个或多个的值是琥珀色,如果这些值都不存在,那么总体上就是琥珀色,那么它将是绿色的。我需要计算每种颜色的整体值的数量,但是在特定的单元格范围内。我有一些脚本,将找到的第一个行号和我需要做搜索的范围的最后一个行号: -

mediumStartRow = Range("H:H").Find(what:="Medium", after:=Range("H21")).Row 
mediumEndRow = Range("H:H").Find(what:="Medium", after:=Range("H21"), searchdirection:=xlPrevious).Row 

我不知道的最好的,为什么来解决这个问题。任何人都可以指向正确的方向。

我已经试过这样的事情: -

With Range("AS:AU" & mediumStartRow("AS:AU" & mediumEndRow)) 
    .Formula = "=IF(COUNTIF(Range"=Red")>0,"Red",IF(COUNTIF(Range,"=Amber")>0,"Amber","Green"))" 
End With 

这是Excel文件的一个例子

sample excel document

回答

0

使用这一些变化得到什么youre寻找

=IF(COUNTIF(C:C, "red")>2, "red", IF(COUNTIF(C:C, "amber")>2, "amber", "green")) 
+0

我得到一个编译错误,它不像“红色”(AS:AU,“红色”),它也没有似乎喜欢With Range(“AS:AU”&mediumStartRow(“AS:AU”&mediumEndRow))说预期的数组。 @Doug大衣 – user3088476

+0

嗯,我想如果你打算使用这个作为一个工作表功能的范围,你将不得不引用vba中的范围而不是工作表格式。 –

+0

类似于这个Application.WorksheetFunction.Average(Worksheets(“Sheet1”)。Range(“C1:C8000”)) –

相关问题