我有两个列表,每个列表都包含不同用户的时间段列表。我想确定一个列表中特定用户的开始日期与另一个列表中用户停止日期相同(或者如果可能的话,在 1 天内,但我会满足于完全匹配)的地方,反之亦然。
列表 1
User Start Stop
User1 1/1/2014 3/15/2014
User1 6/1/2014 12/1/2015
User2 3/1/1998 9/2/2016
User3 4/10/2007 3/5/2011
User3 9/6/2013 9/8/2013
User3 5/20/2014 5/25/2014
清单 2
User Start Stop
User1 3/15/2014 5/31/2014
User1 12/5/2014 2/10/2016
User1 8/2/2016 1/1/2017
User2 5/15/2010 6/25/2010
User2 2/1/2012 3/1/2012
User3 6/1/2012 9/5/2013
User3 4/25/2014 2/8/2017
在上面的例子中:
用户 1 的第一个条目中的停止日期与列表 2 中用户 1 的第一个条目中的开始日期相同。没有其他匹配的日期,因此我只想突出显示该事件。
对于用户 2,列表 1 显示了一个很长的时间范围。尽管列表 2 有两个时间范围完全在列表 1 的时间范围内,但开始/停止日期并不相同,因此它们没有意义。
对于用户 3,列表 1 中第一个条目的开始日期是列表 2 中用户 3 的第一个条目的停止日期的后一天。所以我想以某种方式突出显示这一点。其他时间段没有任何关联,因此它们没有意义。
有人能帮我找到我的匹配项吗?我有数千行。谢谢!
编辑:
以下是显示我所在位置的屏幕截图 -
答案1
要检查完全匹配,最简单的方法可能是使用COUNTIFS
:
=OR(COUNTIFS(List2[User],[@User],List2[Start],[@Stop]),COUNTIFS(List2[User],[@User],List2[Stop],[@Start]))
如果要寻找 1 天的差异,您需要使用SUMPRODUCT
:
=OR(SUMPRODUCT((List2[User]=[@User])*(ABS(List2[Start]-[@Stop])<=1)),SUMPRODUCT((List2[User]=[@User])*(ABS(List2[Stop]-[@Start])<=1)))
在下面的例子中,我在 list1 的新列中添加了计算,您可以将其添加到两个列表中并过滤匹配项。
您可以通过公式选项卡 - “评估公式”逐步查看计算过程