2010-10-30 92 views
0

我正在使用宏来总结特定债务人的价值。它目前工作正常,但我需要添加另一个标准;Sumif基于多个标准和文本颜色

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

我对发票清单工作表另一个Range称为范围(“InvoiceList_Payed”)在此行中有“现金”,“信用”,“(自定义)现金” &“(自定义)信用”。

在“现金” &“(自定义)现金”行中的文本是绿色 和“信用” &“(自定义)信用”行文字是红色

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

因此,类似于;

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

回答

0

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

当然,使用标准VBA函数/属性(如RGB)很容易。

您也可以触发单词“现金”,因为两行绿色行都有相同之处。

例子:

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

我使用Excel 2010中,所以我将如何实现这一目标? – James 2010-10-30 07:20:59

+0

@詹姆斯,这取决于我指的是你想使用的方法。我会在一个例子中进行编辑,但是我不完全确定您的具体细节问题。请注意参数的顺序从SUMIF更改为SUMIFS。 – 2010-10-30 15:51:38

+0

非常感谢Lance,对我的几个宏的帮助很大的一件事是“* CASH *”而不是“CASH”,所以它的工作原理是包含而不是具体,解决了问题,再次非常感谢,谢谢。 – James 2010-10-30 20:02:29