2012-12-26 51 views
2

我有一個Excel文檔,其中包含一個日期列(A)和包含字符串(B)的列之一。在另一張紙上,我正在做計算。如果列A中的單元格在DATE(2012,1,1)和DATE(2012,6,1)之間,並且B列中的同一行在任何部分包含「字符串」(字符串),那麼它應計算該行。谷歌提到使用SUMPRODUCT,但我只能得到工作之間的日期。以下是SUMPRODUCT之間的日期。Excel Countif與多個如果要求

=SUMPRODUCT(--('Sheet1'!A:A>=DATE(2012,1,1)),--('Sheet1'!A:A>=DATE(2012,6,1))) 

我試過使用這個作爲最終值,但它是不正確的。

=SUMPRODUCT(--('Sheet1'!A:A>=DATE(2012,1,1)),--('Sheet1'!A:A>=DATE(2012,6,1)),--('Sheet1'!B:B="*"&"string"&"*")) 

編輯:顯然上面的工作,但字符串必須等於值。 *未被識別爲通配符。

謝謝。

回答

3

如果您在使用SUMPRODUCT全列必須有Excel 2007或更高版本(否則不工作),並在COUNTIFS你可以使用通配符

=COUNTIFS('Sheet1'!A:A,">="&DATE(2012,1,1),'Sheet1'!A:A,"<="&DATE(2012,6,1),'Sheet1'!B:B,"*String*")

0

您使用的是什麼版本的Excel?如果是2007或更高版本,則可以使用COUNTIFS; here is a link to the syntax.即使使用COUNTIFS,也可能必須使用兩列。在Sheet2中,列A應該檢查Sheet1中是否列B包含「串」使用下面的公式:

=IF(ISERR(FIND("string",'Sheet1'!B1)), FALSE, TRUE) 

您將需要更換「工作表Sheet1」 B1與任何細胞,你需要的,然後將它放下,使它具有相同的行數爲您的工作表Sheet1,B列然後你可以使用COUNTIFS的:

=COUNTIFS('Sheet1'!A:A, ">=" DATE(2012,1,1), 'Sheet1'!A:A, ">=" & DATE(2012,6,1), A:A, TRUE. 
1

你正在運行到的問題是由於這樣的事實,你不能以這種方式在使用通配符一個SUMPRODUCT。一種可以解決此問題的方法(假設您需要使用SUMPRODUCT)是使用SEARCHFIND創建用於SUMPRODUCT的必要陣列。下面是在細胞D1目標字符串的例子(注意,這需要輸入與Ctrl+Shift+Enter數組公式):

=SUMPRODUCT(
    --(Sheet1!A:A>=DATE(2012,1,1)), 
    --(Sheet1!A:A<=DATE(2012,6,1)), 
    IFERROR(IF(SEARCH(D1,Sheet1!B:B)>0,1,0),0)) 

IFERROR佔非匹配,但是Excel 2007功能。如果你不使用Excel 2007中,你可以試試:

=SUMPRODUCT(
    --(Sheet1!A:A>=DATE(2012,1,1)), 
    --(Sheet1!A:A<=DATE(2012,6,1)), 
    IF(ISERROR(IF(SEARCH(D1,Sheet1!B:B)>0,1,0)),0,IF(SEARCH(D1,Sheet1!B:B)>0,1,0))) 

而且,在你的榜樣公式,你需要符號在比較切換到<=至六月:)

1

SUMPRODUCT不允許通配符。您可以使用ISNUMBER搜索字符串(SEARCH(「string」,range))。公式如下。

=SUMPRODUCT(--('Sheet1'!A:A>=DATE(2012,1,1)),--('Sheet1'!A:A<=DATE(2012,6,1)),--(ISNUMBER(SEARCH("string",'Sheet1'!B:B)))) 
+0

同意此是SUMPRODUCT的最佳方式,但COUNTIFS更適合多條件計數(因爲速度更快),COUNTIFS也接受通配符,請參閱我的回答 –

+1

...嚴格來說,它不是SUMPRODUCT,不像通配符(僅限於SUMPRODUCT無論如何處理數字) - 這是「比較ison運算符「(=)例如A1 =「* string *」不能識別通配符 –