2010-10-30 40 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