2017-04-15 323 views
1
Description | Invoice No | Invoice Date 
Company A | INV 1 | 3/1/2017 
Company A | INV 2 | 3/1/2017 
Company A | INV 3 | 3/1/2017 
Company B | INV A | 3/1/2017 
Company B | INV A | 3/1/2017 
Company B | INV B | 3/1/2017 
Company C | INV A | 2/1/2017 
Company C | INV B | 3/1/2017 
Company C | INV C | 3/1/2017 

我需要根据表格计算每月特定公司的发票数量的不同计数。Excel按日期范围计算日期范围内的不同值

公司A = 3

公司B = 2

公司C = 2月,1月

我出来的最好的是使用

=SUM(IF(FREQUENCY(IF(C:C>="3/1/2017",IF(Dates<"4/1/2017",IF(A:A="Company A",IF(B:B<>"",MATCH(B:B,B:B,0)))),ROW(B:B)-MIN(ROW(B:B))+1),1),0)) 

CTRL + SHIFT + ENTER

+0

广东话您使用[COUNTIF ](https://support.office.com/en-gb/article/COUNTIF-function-e0de10c6-f885-4e71-abb4-1f464816df34)功能? – Wolfie

+0

如果我想得到不同的值,我不能使用countif。公司B的示例我想返回2而不是3,因为有INV A的副本。 – Cody

回答

1

首先,将公式范围内的参考范围限制为否则公式将必须计算每个IF块和Row()函数内的整个列。

试试这些阵列公式确认与Ctrl + Shift + Enter

对于三月:

公司A:

=SUM(--(FREQUENCY(IF(A2:A10="Company A",IF(MONTH(C2:C10)=3,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

公司B:

=SUM(--(FREQUENCY(IF(A2:A10="Company B",IF(MONTH(C2:C10)=3,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

公司C:

=SUM(--(FREQUENCY(IF(A2:A10="Company C",IF(MONTH(C2:C10)=3,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

对于2月:

公司A:

=SUM(--(FREQUENCY(IF(A2:A10="Company A",IF(MONTH(C2:C10)=2,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

公司B:

=SUM(--(FREQUENCY(IF(A2:A10="Company B",IF(MONTH(C2:C10)=2,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

公司C:

=SUM(--(FREQUENCY(IF(A2:A10="Company C",IF(MONTH(C2:C10)=2,MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 

也代替硬编码的公司,一个月的标准,在工作表上有两个标准单元格并将它们引用到表单中a,以便如果更改条件单元格中的条件,则公式将自动更新。

月分标准,你可以查询当月的名字,而不是如上面的公式是这样使用的月份数...

对于公司A /月的标准

=SUM(--(FREQUENCY(IF(A2:A10="Company A",IF(TEXT(C2:C10,"mmm")="Mar",MATCH(B2:B10,B2:B10,0))),ROW(B2:B10)-ROW(B2)+1)>0)) 
+0

要设置日期范围而不是使用MONTH = 3,我可以将其设置为一个范围吗? 3月可能会有多年,所以会重叠。上面的代码有效,但是当我将其更改为> = 2017年3月1日并添加另一个IF <2017/4/2017时,它不再起作用。 – Cody

+0

我意识到你不能使用IF(C2 <4/1/2017),因为它分开(4/1)/ 2017年......但它在IF(C2> = 3/1/2017)时起作用。我必须改为IF(C2 Cody