2015-06-10 98 views
0
------A ----------------- B ----------------------C ------------------------D 
1 --First--------------Last-----------------Start Date--------------End Date 
2 --John--------------Smith--------------08/08/2014------------01/01/2015 
3---John--------------Smith--------------08/11/2014------------17/11/2014 
4---John--------------Smith--------------06/06/2014------------23/12/2014 
5---Abel--------------Jones--------------14/05/2014------------29/04/2015 
6---Abel--------------Jones--------------04/07/2014------------26/04/2015 

有時在我的電子表格中,我得到重複的名稱。例如上表(有隨機數據),有3個約翰和2個阿貝爾。這些名字是開始和結束日期。如果我有比那名先前進入較早或較晚的是開始或結束日期,我會做優秀指數匹配 - 尋找多個匹配

=MAX($D2:$D4)-MIN($C2:$C4) 

這將使209天計算最長範圍(約翰·史密斯)。
另外,我希望公式能夠自動識別名稱是否在範圍內有重複,如果是,則檢索日期。爲了做到這一點,我執行如下的INDEX MATCH功能。

=INDEX(C:C, 
MATCH(1,INDEX((A:A=$A3)*(B:B=$B3),0),0)) 

這應該給08/08/2014。
因此,然後我將兩個公式結合在一起,比較匹配的開始日期和結束日期,以搜索名和姓,以找到最長的日期範圍。

=MAX(
    (INDEX($C:$C, 
     MATCH(1,INDEX(($A:$A=$A4)*($B:$B=$B4),0),0))) 
:$D4) 
- 
MIN(
    (INDEX($D:$D, 
     MATCH(1,INDEX(($A:$A=$A4)*($B:$B=$B4),0),0))) 
:$C4) 

這再次給了209
這我現在用這個公式時遇到的問題是,當通過名稱列表中的INDEX MATCH函數掃描找到一個重複的,如果這樣做,不僅會與第一場比賽。如果有多個副本,它將忽略它。表中有3個John Smiths,我想要公式檢查所有重複項之間最長的範圍。 這是否有意義,這可能嗎?

回答

2

我會在使用數組公式時更加手術地定義範圍。給定小數據集,該陣列公式給出了預期的結果:

=MAX(IF(INDEX($A$2:$A$6&" "&$B$2:$B$6, 0) = A2&" "&B2, $D$2:$D$6)) - MIN(IF(INDEX($A$2:$A$6&" "&$B$2:$B$6, 0) = A2&" "&B2, $C$2:$C$6)) 

...用Control + Shift + Enter確認以激活陣列。

+0

很好,已經測試過不同的變種,它的工作原理。非常感謝。 – AMorton1989

+0

我忘記了數十次(幾十次)我已經向SO/SU用戶推薦您的SUPERB [站點](http://sites.madrocketscientist.com/jerrybeaucaires-excelassistant/files) - 希望您至少有幾頓免費餐! – pnuts

+0

這是非常友好的,大部分都很高興聽到它被利用。如果你想到一個你認爲適合的通用任務解決方案,請告訴我,我會把它寫出來。再次感謝。 –