2017-05-04 56 views
1

我有一個關於如何檢查某個日期之後,如果我找到匹配的ID後兩個日期之間的quistion。如果那不是真的,我想檢查下一個匹配的ID的日期等。匹配ID的,如果ID匹配檢查,如果某個日期之間是在一個開始日期和結束日期

我已經嘗試過使用INDEX(MATCH())函數並搜索論壇,但無法找出這一個。如果是公式或VBA代碼,則不會有任何問題。

這是我想要比較的表格的一個例子。

Sheet 1 
Id Date 
1  05-06-2017 
1  06-11-2017 
1  09-25-2017 
2  05-12-2017 
2  06-14-2017 
3  09-30-2017 
4  01-06-2017  
4  05-20-2017 

Sheet 2 
Id Start Date  End date 
1  01-01-2017  02-01-2017 
1  03-15-2017  03-20-2017 
1  09-05-2017  09-28-2017 
2  05-10-2017  05-11-2017 
2  05-12-2017  05-20-2017 
3  09-01-2017  10-02-2017 
4  01-01-2017  01-07-2017 
5  05-01-2017  05-25-2017 

我要檢查,如果從片材1的ID在片2存在我想檢查如果ID的在片材1的時間是在開始和結束日期在片材2相匹配的ID之間之後。問題是我不能得到excel來檢查下一個匹配的id是否在開始日期和結束日期之間,如果第一個匹配的id不是真的等等。

我第一次嘗試的是: =INDEX(Sheet2 A:A;MATCH(Sheet1A1;Sheet2A:A;1;0))這給了我的ID。

然後我想:

=IF(INDEX(Sheet2 A:A;MATCH(Sheet1A1;Sheet2A:A;1;0))=A1;IF(AND(B1>=Startdate;B‌​1<=Enddate);"True";"‌​False");"")

+0

*沒問題,如果它是公式或VBA代碼* - 在大多數情況下,這是一個問題[如果您不顯示您的努力和失敗](http://stackoverflow.com/help/如何對問)。我們很樂意幫助您調整無法使用的代碼/公式,但很少有人會爲您編寫整個解決方案。 –

+0

拿了點。我第一次嘗試的是:= INDEX(Sheet2 A:A; MATCH(Sheet1A1; Sheet2A:A; 1; 0))這給了我的id。然後我試着= IF(= INDEX(Sheet2 A:A; MATCH(Sheet1A1; Sheet2A:A; 1; 0))= A1; IF(AND(B1> = Startdate; B1 <= Enddate);「True」假「);」「) – bl1991

+0

之後,我正在考慮advancefilter表1列一個獨特的值。然後使用For循環來檢查表2中的每一行。但是這樣會很慢。 – bl1991

回答

1

使用這個公式:

=IF(ISNUMBER(MATCH(1,INDEX((Sheet2!$A$2:$A$9=A2)*(Sheet2!$B$2:$B$9<=B2)*(Sheet2!$C$2:$C$9>=B2),),0)),"Exists","Does not Exist") 

enter image description here

0

嘗試......

在Sheet1

在C2

=AND(ISNUMBER(MATCH(A2,Sheet2!$A$2:$A$9,0)),SUMPRODUCT((Sheet2!$A$2:$A$9=A2)*(B2>=Sheet2!$B$2:$B$9)*(B2<=Sheet2!$C$2:$C$9))>0) 

,然後複製下來。

相關問題