匹配ID,如果id匹配,请检查某个日期是否在开始日期和结束日期之间

时间:2017-05-04 17:48:33

标签: excel vba excel-vba date

我找到了如何在找到匹配的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中是否存在工作表1中的ID。之后我想检查工作表1中id的日期是否与工作表2中的id匹配的开始日期和结束日期之间我遇到的问题是,如果第一个匹配的ID在开始日期和结束日期之间,如果第一个匹配为真,那么我就无法获得excel。

我首先尝试的是: =INDEX(Sheet2 A:A;MATCH(Sheet1A1;Sheet2A:A;1;0))给了我身份证明。

然后我尝试了:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

然后将其复制下来。