2013-02-09 107 views
1

我有一個包含3列的數據表(爲了清晰起見,簡化了外觀,但是排列和數據格式被保留,第一列ADate使用我的區域設置格式化,但它是NOT text):根據幾個條件從數據數組中返回值

Date  Module Value 
27.01.2013 xxxxx 90 
27.01.2013 ttttt 100 
29.01.2013 aaaaa 110 
31.01.2013 aaaaa 50 
31.01.2013 mmmmm 200 
31.01.2013 ttttt 80 
03.02.2013 ttttt 140 
04.02.2013 aaaaa 120 
07.02.2013 mmmmm 150 
07.02.2013 ttttt 90 
07.02.2013 aaaaa 190 
08.02.2013 aaaaa 210 
08.02.2013 aaaaa 90 
08.02.2013 aaaaa 170 
08.02.2013 ttttt 90 
08.02.2013 ttttt 110 
08.02.2013 mmmmm 130 
09.02.2013 mmmmm 90 
09.02.2013 aaaaa 200 

該列表可能很長並且會定期更新。我需要實現這一目標是:在同一張紙上,我有以下計算單元放在起始列E(即有數據,並計算出區域之間的空白欄d):

MAX last week Date  Value 
aaaaa   09.02.2013 200 
mmmmm   07.02.2013 150 
ttttt   03.02.2013 140 
xxxxx   <empty>  No change 

基本上,我需要從找出在A:C數據陣列執行以下操作:

  1. 對於值的E列表(其對應於模塊中B名)日期和相應的值,它是對於相同的模塊值中最大,但對於上週開始應該返回
  2. 如果對於最後一週此模塊中沒有記錄 - 日期應該是空的,並「沒有變化」字符串應該是值(爲xxxxx從上面的例子,涉及到初始陣列和假設今天是2月9日)。

至於#2,我結束了以下內容:

  • 對於Date=IF(SUMPRODUCT(--(A:A>TODAY()-7),--(A:A="xxxxx"))=0,"")
  • 對於Value=IF(F5="","No change")(左我這裏檢查對應的日期)

至於#1 - 我卡住了,那就是我需要指導或建議的地方。我嘗試了與MATCH,VLOOKUP等類似的東西,但是甚至沒有接近成功:我要麼有錯誤,要麼沒有相關的結果。

如果這很重要 - 日期總是排序,最近在列表的末尾,即新的記錄被添加到底部。同一個模塊可能在同一天有幾個記錄。如果樣本或解釋不清楚 - 請回複評論,我會添加更多詳細信息。謝謝!

回答

3

嘗試這樣的一個數組公式中G2的價值

=IF(COUNTIFS(A$2:A$100,">"&TODAY()-7,B$2:B$100,E2),MAX(IF(A$2:A$100>TODAY()-7,IF(B$2:B$100=E2,C$2:C$100))),"No change")

CTRL+SHIFT+ENTER確認並抄下來

,然後日期F2

=IF(G2="No change","",MIN(IF(A$2:A$100>TODAY()-7,IF(B$2:B$100=E2,IF(C$2:C$100=G2,A$2:A$100)))))

如果有最大值爲該模塊的最近7天內的多個日期發生會給你最早的(改變MIN到MAX最新)

看到here的工作樣本

+0

謝謝,我結束了'= IF(F2 =「」,「沒有變化」,MAX( IF(A:A> TODAY() - 7,IF(B:B = E2,C:C))))'爲值。但是Date呢?我無法弄清楚如何擴展我的解決方案,以包括過去一週的日期...... – 2013-02-09 14:04:27

+0

您希望MAX值出現的日期?我編輯了我的答案.... – 2013-02-09 14:37:51

+0

對不起,但日期的公式返回循環引用,如果我將它與我的公式一起使用它的價值:我使用日期字段檢查是否爲「」或「沒有更改」的情況下。日期和值分別位於F和G. – 2013-02-09 16:36:14