我有一个大致如下的数据集:
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(因为安妮被计算两次)。我很难看到如何处理这个问题。任何帮助表示赞赏。
答案 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。
然后,您可以对该列求和,并获得与过滤条件匹配的唯一名称的总和。