Excel Countif与多个如果要求

我有一个Excel文档,它包含一个date列(A)和一个包含string(B)的列。 在另一张纸上,我正在计算。 如果列A中的单元格在DATE(2012,1,1)和DATE(2012,6,1)之间,并且B列中的同一行包含任何部分( string )中的“string”,则应对该行进行计数。 谷歌提到使用SUMPRODUCT,但我只能得到date之间的工作。 以下是SUMPRODUCT之间的date。

=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"&"*")) 

编辑:显然上面的工作,但string必须等于值。 *不被识别为通配符。

谢谢。

如果您在SUMPRODUCT中使用整列,则必须安装Excel 2007或更高版本(否则不起作用),并且可以在COUNTIFS中使用通配符

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

您遇到的问题是由于您不能在SUMPRODUCT以这种方式使用通配符。 您可以绕过它的一种方法(假设您需要使用SUMPRODUCT )是使用SEARCHFIND创buildSUMPRODUCT使用的必要数组。 下面是一个在D1单元格中有目标string的例子(请注意,这需要用Ctrl+Shift+Enter作为数组公式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 2007function。 如果您不使用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))) 

另外,在你的例子公式中,你需要把符号切换到<=在比较六月:)

Sumproduct不允许使用通配符。 您可以使用ISNUMBER(SEARCH(“string”,range))searchstring。 公式如下。

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

你使用的是什么版本的Excel? 如果是2007或更高版本,则可以使用COUNTIFS; 这里是一个链接到语法。 即使使用COUNTIFS,也可能必须使用两列。 在Sheet2上,列A应使用以下公式检查Sheet1列B是否包含“string”:

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

您将需要用所需的任何单元replace“Sheet1”!B1,然后将其拖动到与Sheet1,B列相同的行数。然后,可以使用COUNTIFS:

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