2017-05-04 32 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) 

,然后复制下来。

相关问题