根据日期条件

时间:2016-03-19 15:00:52

标签: excel excel-formula excel-2010

我需要的是根据FIAP / Medium& amp;的标准来计算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

我想出了公式

=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)))

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

请根据这些条件帮助我使用此公式或任何其他方法进行统计。特别日期

2 个答案:

答案 0 :(得分:5)

基于SUMPRODUCTCOUNTIF函数的伪COUNTUNIQUE¹有一种相当常见的方法。

=SUMPRODUCT(1/COUNTIF(A2:A19, A2:A19&""))

但这确实可以弥补条件。要添加条件,您需要更改为COUNTIFS function。此外,除法运算的分子和分母都必须通过条件和条件的倒数进行调整,以便返回真实计数而不会错误地使用#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)))

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)))

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

¹有关其工作原理的说明,请参阅Count Unique with SUMPRODUCT() Breakdown

答案 1 :(得分:0)

你的公式适用于一些调整:

  1. 需要使用DateValue()函数将日期字符串转换为日期值

  2. 日期的比较运算符互换(应该是&lt; = 2016 date和&gt; = 2013 date)

  3. 与&#34;数字&#34;的比较需要扭转

  4. 对于条件失败的情况,最里面的IF语句需要零作为值

  5. 我删除了不需要的最外面的括号

  6. 以下是适用的修改版本:

    =频率(IF(国际M2:M1000&LT = DATEVALUE(&#34 6 /二千〇一十六分之一&#34),IF(国际M2:!M1000&GT; = DATEVALUE(&#34 3/23 / 2013&#34),IF(国际I2:I1000&LT;&GT;&#34;&#34;,IF(国际I2:!I1000&LT;&GT;&#34;数字&#34;,MATCH(国际A2: !A1000,国际A2:A1000,0),0)))),ROW(国际A2:!A1000)-ROW(国际A2)+ 1&0)