SUTIRODUCT计算唯一文本值

时间:2014-03-10 19:27:14

标签: excel sum product

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

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

我有一个我正在为指标创建的信息中心。有一个数据验证列表,用户可以在其中选择他们想要了解的月份。该选择触发两个单元的变化--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)

OR

(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;第一栏= FillDate;列J = DaysToFill,列H(此处未使用)是名称

这一切都很好,但我需要一种方法来添加上述公式的条件 - 我需要一种方法来计算满足这些条件的唯一名称。所以对于上述数据,如果用户选择1月,则公式I的输出为4 [3满足(i)中的条件,1满足(ii)中的条件]。但是,如果我们得到额外的一层独特的招聘人员,我应该得到3(因为安妮被计算两次)。我很难看到如何处理这个问题。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分: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始终包含日期或“打开”该部分将为所有内容返回TRUE,那么额外条件是否会实现任何效果.....

答案 1 :(得分:0)

快速思考: - 创建一个标记列的标志列,如果该行符合选择条件。例如,第一个条目是“Samuel.True” 在下一栏中,输入以下公式

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

如果它是第一个匹配的名称和有效选择,那么它将返回1,如果不是,则返回0。

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