我希望Excel检查两个时间间隔是否相交。
例如,I3-J3和I5-J5相交。如何使Excel在另一个单元格中显示此交点?
laawzig21#
以下公式将显示最后一行的任何干涉。只需将此公式复制到单元格K3中并将其复制下来:
K3
=IF(OR(AND(OR(I3>(I$2:I2)),OR(I3<(J$2:J2))),AND(OR(I3>(I$2:I2)),OR(I3<(J$2:J2)))),"interference","OK")
请注意,这是一个数组公式,必须使用Ctrl + Shift + Enter输入。有关数组公式的更多信息,您可能需要阅读以下文章:https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686-9372-ECFD5CAA57C7
Ctrl
Shift
Enter
如果你想同时显示interference和I$2:I2,那么你必须扩展I$2:I2和J$2:J2以包含整个列表。因此,这可能分别是(例如)I$2:I$500和J$2:J$500。但是,不能包括行本身。否则,您将始终得到interference,因为公式将检查自身。因此,您必须为每一行生成单独的公式,并且不能输入通用公式并将其复制下来。我不知道如何显示(仅使用公式)干扰项。这主要是由于可能存在多个干扰条目,然后必须列出这些条目并以,分隔。我不认为仅仅用公式就能做到这一点。注意:上述解决方案基于以下基本原则:Excel中的所有日期和时间(本质上)都只是格式化为日期或时间的数字。有关更多信息,您可能需要阅读以下内容:因此,上面的公式只是检查列I中的日期是否在列I和列J中的任何先前日期之间。如果列I中的日期是>,列I和中的前一个日期也是<,与列J中的日期相比,则这是干扰。必须对K列中的日期进行同样的检查,然后两者都必须与OR组合。这就是上面的整个公式。
interference
I$2:I2
J$2:J2
I$2:I$500
J$2:J$500
,
I
J
>
<
K
OR
根据@Gordon提供的评论,可以使用COUNTIFS函数改进公式。只需在单元格C2中输入以下公式并将其复制下来:
COUNTIFS
C2
=SUM(COUNTIFS(A:A,"<"&A2,B:B,">"&A2),COUNTIFS(A:A,"<"&B2,B:B,">"&B2))
任何大于0的数字意味着至少存在一个干扰。使用此公式,现在可以计数/显示多个碰撞,如以下屏幕截图所示:
0
请注意,改进后的公式不再要求您知道表的范围。相反,您可以搜索整个列A:A和B:B中的干涉。
A:A
B:B
kpbpu0082#
我想改进@Ralph提供的公式。该公式仅考虑两种相交情况-时间间隔重叠时。但还有两种情况的交集:
所以我的最终公式看起来像这样:
=SUM(COUNTIFS(A:A, "<"&A2, B:B, ">"&A2), COUNTIFS(A:A, "<"&B2, B:B, ">"&B2), COUNTIFS(A:A, ">"&A2, B:B, "<"&B2), COUNTIFS(A:A, "<"&A2, B:B, ">"&B2))
2条答案
按热度按时间laawzig21#
以下公式将显示最后一行的任何干涉。只需将此公式复制到单元格
K3
中并将其复制下来:请注意,这是一个数组公式,必须使用
Ctrl
+Shift
+Enter
输入。有关数组公式的更多信息,您可能需要阅读以下文章:https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686-9372-ECFD5CAA57C7如果你想同时显示
interference
和I$2:I2
,那么你必须扩展I$2:I2
和J$2:J2
以包含整个列表。因此,这可能分别是(例如)I$2:I$500
和J$2:J$500
。但是,不能包括行本身。否则,您将始终得到interference
,因为公式将检查自身。因此,您必须为每一行生成单独的公式,并且不能输入通用公式并将其复制下来。我不知道如何显示(仅使用公式)干扰项。这主要是由于可能存在多个干扰条目,然后必须列出这些条目并以
,
分隔。我不认为仅仅用公式就能做到这一点。注意:上述解决方案基于以下基本原则:Excel中的所有日期和时间(本质上)都只是格式化为日期或时间的数字。有关更多信息,您可能需要阅读以下内容:因此,上面的公式只是检查列
I
中的日期是否在列I
和列J
中的任何先前日期之间。如果列I
中的日期是>
,列I
和中的前一个日期也是<
,与列J
中的日期相比,则这是干扰。必须对K
列中的日期进行同样的检查,然后两者都必须与OR
组合。这就是上面的整个公式。更新:
根据@Gordon提供的评论,可以使用
COUNTIFS
函数改进公式。只需在单元格C2
中输入以下公式并将其复制下来:任何大于
0
的数字意味着至少存在一个干扰。使用此公式,现在可以计数/显示多个碰撞,如以下屏幕截图所示:请注意,改进后的公式不再要求您知道表的范围。相反,您可以搜索整个列
A:A
和B:B
中的干涉。kpbpu0082#
我想改进@Ralph提供的公式。该公式仅考虑两种相交情况-时间间隔重叠时。但还有两种情况的交集:
所以我的最终公式看起来像这样: