2015-07-21 65 views
-4

我需要幫助Excel中尋找尋找正確的輸出基於金額的四條件語句:在Excel中最大的條件語句重複的最大值

  1. 最大值時間戳的;
  2. 如果存在重複的最大日期,請使用相同的最後一行時間戳,因爲數據不會延長到秒;
  3. 每月的時間戳;
  4. 每(4)唯一ID

和離開其他行的空白。 正確輸出列是預期輸出。

這裏的示例數據:

╔════╦═════════════════════════════╦═════════╦════════════════╦══╦═════════════╦════════════╦═════════╗ 
║ ID ║ Timestamp (yyyy-mm-dd H:mm) ║ Amount ║ Correct Output ║ ║ Date Format ║ Max Date ║ Test ║ 
╠════╬═════════════════════════════╬═════════╬════════════════╬══╬═════════════╬════════════╬═════════╣ 
║ A ║ 2013-04-15 20:42   ║ NULL ║ NULL   ║ ║ 2013-04-15 ║ 2013-04-15 ║ NULL ║ 
║ A ║ 2013-05-23 23:09   ║ 300000 ║ 300000   ║ ║ 2013-05-23 ║ 2013-05-23 ║ 300000 ║ 
║ A ║ 2013-09-15 23:36   ║ 300000 ║ 300000   ║ ║ 2013-09-15 ║ 2013-09-15 ║ 300000 ║ 
║ A ║ 2013-12-19 5:58    ║ 300000 ║    ║ ║ 2013-12-19 ║ 2013-12-19 ║ 0  ║ 
║ A ║ 2013-12-19 6:18    ║ 0  ║    ║ ║ 2013-12-19 ║ 2013-12-19 ║ 0  ║ 
║ A ║ 2013-12-19 6:18    ║ 0  ║ 0    ║ ║ 2013-12-19 ║ 2013-12-19 ║ 0  ║ 
║ B ║ 2013-05-23 23:00   ║ NULL ║    ║ ║ 2013-05-23 ║ 2013-05-23 ║ 0  ║ 
║ B ║ 2013-05-23 23:04   ║ 0  ║ 0    ║ ║ 2013-05-23 ║ 2013-05-23 ║ 0  ║ 
║ B ║ 2013-05-30 3:48    ║ 2339000 ║    ║ ║ 2013-05-30 ║ 2013-05-30 ║ 1169500 ║ 
║ B ║ 2013-05-30 3:54    ║ 1169500 ║ 1169500  ║ ║ 2013-05-30 ║ 2013-05-30 ║ 1169500 ║ 
║ B ║ 2013-06-02 11:46   ║ 2339000 ║    ║ ║ 2013-06-02 ║ 2013-06-02 ║ 2339000 ║ 
║ B ║ 2013-06-27 8:40    ║ 2339000 ║    ║ ║ 2013-06-27 ║ 2013-06-27 ║ 2339000 ║ 
║ B ║ 2013-06-27 13:59   ║ 2339000 ║    ║ ║ 2013-06-27 ║ 2013-06-27 ║ 2339000 ║ 
║ B ║ 2013-06-27 13:59   ║ 2339000 ║ 2339000  ║ ║ 2013-06-27 ║ 2013-06-27 ║ 2339000 ║ 
║ C ║ 2015-02-09 12:43   ║ NULL ║    ║ ║ 2015-02-09 ║ 2015-02-09 ║ NULL ║ 
║ C ║ 2015-02-09 12:43   ║ NULL ║ NULL   ║ ║ 2015-02-09 ║ 2015-02-09 ║ NULL ║ 
║ D ║ 2013-12-02 0:05    ║ NULL ║    ║ ║ 2013-12-02 ║ 2013-12-02 ║ 37000 ║ 
║ D ║ 2013-12-02 0:37    ║ 37000 ║ 37000   ║ ║ 2013-12-02 ║ 2013-12-02 ║ 37000 ║ 
║ D ║ 2014-07-16 7:36    ║ 0  ║    ║ ║ 2014-07-16 ║ 2014-07-16 ║ 0  ║ 
║ D ║ 2014-07-16 7:36    ║ 0  ║ 0    ║ ║ 2014-07-16 ║ 2014-07-16 ║ 0  ║ 
║ E ║ 2013-06-27 8:35    ║ NULL ║ NULL   ║ ║ 2013-06-27 ║ 2013-06-27 ║ NULL ║ 
╚════╩═════════════════════════════╩═════════╩════════════════╩══╩═════════════╩════════════╩═════════╝ 

參考文獻:

  • 列A - ID
  • 列B - 時間戳
  • F欄 - 日期格式
  • G列 - 最大日期
  • H列 - 測試

下面是我嘗試以下步驟:

  1. 我創建使用date
  2. 創建的最大日期日期格式=MAX(IF($F$2:$F$22=F2,IF($A$2:$A$22=A2,$B$2:$B$22)))(在陣列)
  3. 創建的測試與=INDEX(C2:C22,MATCH(G2,B2:B22,0))(in array)
+1

你到目前爲止試過了什麼?它在哪裏失敗,它的運行方式與預期不同? –

+1

同時以簡單易用的格式提供您的數據,請參閱:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610並向我們展示您的預期結果。 – mts

+0

你好mts,輸出是最終值列 – FoxyReign

回答

0

假設小區D2爲先 「正確的輸出」:

=IF(SUMPRODUCT(0+(MONTH(G$2:G$22)=MONTH(G2)),0+(A$2:A$22=A2))=SUMPRODUCT(0+(MONTH(G$2:G2)=MONTH(G2)),0+(A$2:A2=A2)),LOOKUP(1,0/((MONTH(G$2:G$22)=MONTH(G2))*(A$2:A$22=A2)),C$2:C$22),"")

複製下來作爲必需的。

請注意,您可以修改被引用的上部行(這裏是22)以滿足您的要求,但是您應該小心謹慎,不要使其過於龐大(並且肯定不會引用整列!),因爲對於每增加一個單元格,都需要額外的計算。

而且,這些附加信元在技術上是否超出了這些範圍內最後使用的信元。藉助一些功能,例如COUNTIF(S)/ SUMIF(S),您可以在不影響性能的情況下引用整個列,但不能使用對陣列進行操作的函數,如AGGREGATE,SUMPRODUCT和任何需要CSE的構造。

更好的是,讓你的範圍變成動態的,這樣當數據展開/合同時它們就會自動調整。

Regards