簡體   English   中英

根據日期條件之間另一列中的條件計算唯一文本值

[英]count unique text values based on condition in another column between date criteria

我需要的是基於FIAP / Medium和Year列的標准來計算TITLE中唯一值的公式。

首先需要查看工作表列M / Year中的日期,范圍是23 /03/ 13-01 /06/ 16 然后,它需要檢查I / FIAP中列以查找“數字 ”,並最終計算A /標題中的唯一圖像。

這是工作表列

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

但顯示零值。 可能是因為日期條件需要兩個條件且一列。

請使用此公式或任何其他方法幫助我根據此條件計算不重復次數。 特別的日期

有一個基於SUMPRODUCTCOUNTIF函數的偽COUNTUNIQUE¹的相當常見的方法,如下所示。

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

但這確實彌補了條件。 要添加條件,您需要更改為COUNTIFS函數 另外,除法運算的分子和分母都必須通過條件和條件的逆數進行調整,以便您返回真實計數而不會因#DIV #DIV/0!出錯#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

現在很難維護公式了,行數不斷增加和刪除。 要創建動態范圍,我們可以對每整列進行索引,並使用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函數處理的行,因此計算效率非常高。


¹ 有關其工作原理的說明,請參見SUMPRODUCT()Breakdown中的Count Unique

您的公式可以進行一些調整:

  1. 需要使用DateValue()函數將日期字符串轉換為日期值

  2. 日期的比較運算符可以互換(應該是<= 2016日期和> = 2013日期)

  3. 與“數字”的比較需要逆轉

  4. 如果條件失敗,最里面的IF語句需要一個零作為值

  5. 我刪除了不需要的最外面的括號

這是有效的修改后的版本:

=頻率(IF(國際M2:M1000 <= DATEVALUE( “2016年6月1日”),IF(國際M2:M1000> = DATEVALUE( “2013年3月23日”),IF(國際I2:I1000 <> “”,IF(國際I2:I1000 <>! “數字”,MATCH(國際A2:A1000,國際A2:A1000,0),0!)))),ROW(國際!A2:A1000) - ROW(國際!A2)+1> 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM