SUMPRODUCT计算独特的文本值

我有一个大致如下所示的数据集:

OpenDate Name FillDate DaysToFill 12/05/13 Samuel - Open 01/01/14 Anne 01/16/14 16 01/12/14 Mike 01/25/14 13 01/28/14 Anne 01/31/14 3 

我有一个我为指标创build的仪表板。 有一个数据validation列表,其中用户select他们想要的信息的月份。 这个select触发两个单元格 – R2和R3的变化。 R2对应月份并生成当月的数值(Jan = 1,Feb = 2等),R3生成当月的最后一天(Jan = 01/31/14,Feb = 02 / 28/14)。

我有一个公式来计算符合以下条件的条目数:

 (i) DaysToFill > 0 AND FillDate is in the month chosen (in R2) 

要么

 (ii) DaysToFill = "Open" AND OpenDate < last day of month chosen (in R3) 

我目前有以下sumproduct公式计算这个:

 =SUMPRODUCT(--(ISNUMBER(DATA!I2:I30)),--(MONTH(DATA!I2:I30)=Sheet1!R2), --(DATA!J2:J30>0))+SUMPRODUCT(--(ISNUMBER(DATA!C2:C30)), --((DATA!C2:C30)<=Sheet1!R3),--(DATA!J2:J30="Open")) 

哪里

C列= OpenDate; 列I = FillDate; J列= DaysToFill,H列(这里不使用)是Name

这一切工作正常,但我需要一种方法来添加上述公式的条件 – 我需要一种方法来计数符合这些条件的唯一名称。 因此,对于上述数据,如果用户select1月份,则公式I的输出为4 [3满足(i)中的条件,1满足(ii)中的条件]。 但是,如果我们得到独特的招聘人员的额外层,我应该得到3(因为安妮计数两次)。 我很难看到如何解决这个问题。 任何帮助表示赞赏。

你可以使用这个“数组公式”

=SUM(IF(FREQUENCY(IF(ISNUMBER(DATA!I2:I30)*(MONTH(DATA!I2:I30)=Sheet1!R2)*(DATA!J2:J30>0)+ISNUMBER(DATA!C2:C30)*(DATA!C2:C30<=Sheet1!R3)*(DATA!J2:J30="Open"),IF(H2:H30<>"",MATCH(H2:H30,H2:H30,0))),ROW(H2:H30)-ROW(H2)+1),1))

CTRL + SHIFT + ENTER确认

请注意,我不确定您的原始公式是否存在缺陷,因为对于包含“打开”的单元, DATA!J2:J30>0将返回TRUE 。 如果J2:J30总是包含一个date或“打开”的部分将返回TRUE的一切,那么额外的条件是否实现了任何东西…..

快速的想法: – 创build一个连接名称的标志列,如果行匹配select标准。 例如第一个条目将是“Samuel.True”在下一列创buildinput下面的公式

 =if(row(<cell where name is>) = match(<cell where name is>&".True",<entire column created above>,0),1,0) 

这个想法将返回1,如果它是第一个匹配的名称和有效的select,如果不是0,则返回0。

然后,您可以对该列进行求和,并获得与过滤条件匹配的唯一名称的总数。