2015-06-22 95 views
3

小區我有以下的Excel電子表格,我試圖找出我怎麼能以提供在列D.Excel中 - 選擇基於相鄰單元格值

值在每行寫一個公式,有一個測試日期,我試圖計算每個測試日期到每個主題特定的主要日期的日差。

我認爲這將涉及基於列C中的值選擇主要測試日期,我不知道我該如何做到這一點。

任何幫助,將不勝感激。

A   B   C     D 
Subject  TestDate Principal date Day difference from Principal date 
Subject 1 01/12/2014     -3 
Subject 1 02/12/2014     -2 
Subject 1 03/12/2014     -1 
Subject 1 04/12/2014 Yes    0 
Subject 2 07/12/2014     -1 
Subject 2 08/12/2014 Yes    0 
Subject 2 11/12/2014      3 
Subject 3 17/12/2014     -1 
Subject 3 18/12/2014 Yes    0 
Subject 3 24/12/2014      6 

回答

3

這裏的邏輯是:(1)找到每個主題的日期,這是主要日期,並返回每一行; (2)從col B的當前日期中減去此日期。 (2)很容易,但(1)需要與SubjectPrincipal Date兩者上的B中的值匹配的方式。您可以使用INDEX-MATCH函數與多個MATCH條件來執行此操作。

隨着A2:C11您的數據和row 1列標題,在D2輸入公式和向下填充:

{=B2-INDEX($A$2:$C$11,MATCH(1,($A$2:$A$11=$A2)*($C$2:$C$11="Yes"),0), 2)}

請注意,您需要輸入它作爲使用按Ctrl數組公式移位輸入


背後的INDEX-MATCH功能的邏輯是:

  • A2:C11是整個原始數據表;該函數查看整個表。
    • 請注意,如果需要,您可以包含標題,這對於通過匹配列標題名稱定義查找列很有用。如果你這樣做,你需要確保你的所有陣列具有相同的尺寸(,即,如果你的數據表是A1:C11MATCH函數中的列也需要從row 1開始)。
  • MATCH函數從通過乘以多個邏輯條件而提供的查找數組中尋找值1。它將評估是否A2=A2,A3=A2,A4=A2等,並創建一列TRUE/FALSE值。然後它會爲C2="Yes"C3="Yes"等做同樣的事情。無論何時滿足這兩個條件,邏輯陣列的乘積將爲1。 (0告訴MATCH尋找一個確切的匹配
  • 2告訴INDEX功能由MATCH函數指定的行中找到第二列(B)的值 - 即,其中兩個條件都得到滿足。

然後從B2中的值中減去該值以給出日期差異。


如在評論中所指出,這個公式也可以簡化爲只索引所需的查找列:

=B2-INDEX($B$2:$B$11,MATCH(1,($A$2:$A$11=$A2)*($C$2:$C$11="Yes"),0))

+0

我總是喜歡與數組條件很好的匹配 – chancea

+1

非常感謝你的幫助。只是想知道爲什麼不能公式:= B2-INDEX($ B $ 2:$ B $ 11,MATCH(1,($ A $ 2:$ A $ 11 = $ A2)*($ C $ 2:$ C $ 11 =「是「),0))。因此,後指數爲什麼它必須是$ A $ 2:$ C $ 11但不只是$ B $ 2:$ B $ 11? –

+0

好點。在這種情況下實際上沒有任何理由,它不能是'= B2-INDEX($ B $ 2:$ B $ 11,MATCH(1,($ A $ 2:$ A $ 11 = $ A2)*($ C $ 2: $ C $ 11 = 「是」),0))'。在其他情況下,您可能需要完整的數組和列號參數(_e.g._),以類似'MATCH(「ColName」,RowHeaderArray,0)''的方式動態指定列號。 –

0

提取從TestDate的DAY(),並添加天差異:

公式列首席日期:= DAY(B2)+ D2

 A   B   C     D 
1 Subject  TestDate Principal date Day difference from Principal 
2 Subject 1 2014-06-01 28    -3 

現在你有正確的一天,並且您可以在新的專欄中創建新的日期,或者合併這兩個功能。

1

晴相同的邏輯@布倫丹但略短。這仍然是按Ctrl + Shift鍵輸入的數組公式 + 輸入

=B2-SMALL(IF(IF($A$2:$A$11=A2,$C$2:$C$11)="Yes",$B$2:$B$11),1) 

IF($A$2:$A$11=A2,$C$2:$C$11)讓你的數組只有對應於題目你是校長。接下來IF(IF(...)="Yes",$B$2:$B$11)得到你只有一個數組只有主體日期和FALSE所有其他值。 SMALL(...,1)讓你只是可以從當前測試日期減去的主要日期:B2-SMALL(...)

+0

感謝您的幫助。非常感激! –

相關問題