根据日期条件之间的另一列中的条件计算唯一文本值

Ana*_*and 2 excel excel-formula excel-2010

我需要的是根据FIAP/Medium&Year列标准计算TITLE中的唯一值的公式.

这需要从工作表列M /年中查看日期开始,范围是23/03/13 - 01/06/16.然后需要检查列I/FIAP Medium寻找'Digital '并最终计算A/Title中的唯一图像.

这是工作表栏

   Title              FIAP/Medium      Year
  Conors Push        Digital         3/23/2013
  Conors Push        Digital         4/1/2013
  Flippin Hell       Digital         4/1/2013
 Narrowing the Gap   Digital         4/1/2013
 The Perfect Storm   Digital         4/8/2013
 Conors Push         Digital         4/12/2013
 Splash and Dash     Digital         4/12/2013
 Wind Power          Digital         4/12/2013
 Conors Push           -             4/28/2013
 Eyes On The Ball      -             4/28/2013
 Narrowing the Gap     -             4/28/2013
 The Bunkers Demise    -             4/28/2013
 A Few Inches More   Digital         5/1/2013
 Entwined            Digital         5/1/2013
 Conors Push         Digital         5/14/2013
 Fosbury Delight     Digital         5/14/2013
 Narrowing The Gap   Digital         5/14/2013
 Sprint For The Lin  Digital         5/14/2013
Run Code Online (Sandbox Code Playgroud)

我想出了配方奶粉

=SUM(--(FREQUENCY(IF(International!M2:M1000>="6/1/2016",IF(International!M2:M1000<="3/23/2013",IF(International!I2:I1000<>"",IF(International!I2:I1000="Digital",MATCH(International!A2:A1000,International!A2:A1000,0))))),ROW(International!A2:A1000)-ROW(International!A2)+1>0)))
Run Code Online (Sandbox Code Playgroud)

但它显示零价值.这可能是因为日期条件需要两个条件,一列.

请帮助我使用此公式或任何其他方法根据此条件计算唯一.特别约会

小智 5

基于SUMPRODUCT和COUNTIF函数,有一种相当常见的伪COUNTUNIQUE¹方法,如下所示.

=SUMPRODUCT(1/COUNTIF(A2:A19, A2:A19&""))
Run Code Online (Sandbox Code Playgroud)

但这确实弥补了条件.要添加条件,您需要更改为COUNTIFS函数.此外,除法运算的分子和分母都必须通过条件和条件的倒数进行调整,以便返回真正的计数而不会出现错误#DIV/0!.

=SUMPRODUCT(((C$2:C$19>=F2)*(C$2:C$19<=G2)*($B$2:$B$19=E2))/
             (COUNTIFS(A$2:A$19, A$2:A$19&"", C$2:C$19, ">="&F2, C$2:C$19, "<="&G2, $B$2:$B$19, E2)+
              (C$2:C$19<F2)+(C$2:C$19>G2)+($B$2:$B$19<>E2)))
Run Code Online (Sandbox Code Playgroud)

  count_unique_with_conditions

现在该公式难以维持,行数有不断的增加和删除.要创建动态范围,我们可以INDEX每个完整列并使用MATCH将最后一个日期定位为每列的终止符.

=SUMPRODUCT(((C$2:INDEX(C:C, MATCH(1E+99,C:C ))>=F2)*(C$2:INDEX(C:C, MATCH(1E+99,C:C ))<=G2)*($B$2:INDEX(B:B, MATCH(1E+99,C:C ))=E2))/
    (COUNTIFS(A$2:INDEX(A:A, MATCH(1E+99,C:C )), A$2:INDEX(A:A, MATCH(1E+99,C:C ))&"", C$2:INDEX(C:C, MATCH(1E+99,C:C )), ">="&F2, C$2:INDEX(C:C, MATCH(1E+99,C:C )), "<="&G2, B$2:INDEX(B:B, MATCH(1E+99,C:C )), E2)+
      (C$2:INDEX(C:C, MATCH(1E+99,C:C ))<F2)+(C$2:INDEX(C:C, MATCH(1E+99,C:C ))>G2)+($B$2:INDEX(B:B, MATCH(1E+99,C:C ))<>E2)))
Run Code Online (Sandbox Code Playgroud)

是的,这看起来像一团糟,但它动态地添加和减去由SUMPRODUCT函数处理的行,以便计算效率非常高.


¹ 有关其工作原理的说明,请参阅带有SUMPRODUCT()细分的唯一计数.