基于多准则和文本颜色的Sumif

时间:2010-10-30 05:36:10

标签: excel vba worksheet-function

我使用宏来汇总特定债务人的价值。它目前工作正常,但我需要添加另一个标准;

Range("DebtorList_Payed")=Application.SumIf(Range("InvoiceList_Table_ItmCode"), _
  Range("Debtor_list_Debtors"), Range("InvoiceList_Price"))

我在发票清单工作表上有另一个名为Range(“InvoiceList_Payed”)的范围,在这一行中有“CASH”,“CREDIT”,“(自定义)CASH”& “(自定义)CREDIT”。

“CASH”中的文字& “(自定义)CASH”行为绿色 以及“信用证”和“信用证”中的文字“(自定义)CREDIT”行是红色

使用现有的宏我需要它只对相应范围(“InvoiceList_Payed”)中的文本颜色为绿色的行进行求和,

就像这样;

Range("DebtorList_Payed")=Application.SumIf(Range("InvoiceList_Table_ItmCode"), _
  Range("Debtor_list_Debtors"), Range("InvoiceList_Price") = _  
  Range("InvoiceList_Payed")> "Green"))

1 个答案:

答案 0 :(得分:0)

如果您使用的是Excel 2007或更高版本,则可以使用SUMIFS功能,如果您使用的是早期版本,则可以嵌套SUM和IF功能。真正的问题是无法从工作表函数中获取单元格的颜色。你可以使用CELL(“颜色”,REF)功能,如果单元格上的格式设置为绿色为正,红色为负(反之亦然)。

当然,使用标准的VBA功能/属性(如RGB)很容易做到这一点。

你也可以触发“CASH”这个词,因为两个Green行都有共同点。

示例:

SUMIFS(Range("InvoiceList_Payed"), Range("InvoiceList_Table_ItmCode"), _  
  Range("Debtor_list_Debtors"), Range("InvoiceList_Payed"), "*CASH*")