【发布时间】:2017-05-04 17:48:33
【问题描述】:
在我找到匹配的 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 中。之后,我想检查工作表 1 中的 id 日期是否介于与工作表 2 中的 id 匹配的开始日期和结束日期之间。问题是有是我不能让excel来检查下一个匹配的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;B1<=Enddate);"True";"False");"")
【问题讨论】:
-
如果是公式或 VBA 代码,没问题 - 在 SO 上,大多数时候 if you don't show your efforts and where it's failing 是个问题。我们很乐意帮助调整您无法使用的代码/公式,但没有多少人会为您编写完整的解决方案。
-
点了。我首先尝试的是: =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
-
在那之后我想提前过滤表 1 列 A 唯一值。然后使用 For 循环检查工作表 2 上的每一行。但这会非常慢。
-
您要检查 sheet1 中 id 的第一个实例与 sheet2 中 id 的第一个实例吗?或者第一个表中 id 1 的第一个实例可以在任何 start | 之间。 id 1 的 sheet2 中的结束日期?
-
没错,斯科特。