Excel 根据开始/结束时间和 PC 名称计算并发会话数

Excel 根据开始/结束时间和 PC 名称计算并发会话数

我知道已经有一个与此非常相似的帖子了 – Excel 根据开始/结束时间计算并发会话数– 但是,尽管我尽力了,我还是无法复制和操纵建议的答案来满足我的需求。

我还希望检测用户 ID 何时从多台 PC 同时登录到旧式 Unix ERP 系统 - 他们可能会与同事共享其凭据。

数据示例如下:

Record #    Time In    Time Out    User      PC Name
1           10:54      10:55       Al        PC1
2           10:55      16:55       Dave      PC42
3           09:11      09:29       Al        PC1
4           11:02      18:03       Al        PC1
5           16:19      17:38       George    PC678
6           16:43      17:41       Al        PC678
7           16:46      17:39       Dave      PC42
8           17:25      17:49       Al        PC42

“开始时间”和“结束时间”值实际上是完整的日期/时间,因此您无需担心比较不同日期发生的事件。我在这里只显示时间,以避免提供太多信息. 以上数据可以用图形表示为:

    条形图

在列表末尾(以及图表底部),您可以看到用户 Al 正在同时从多台 PC 访问系统,其他用户也从相同的 PC 访问系统。用户 Al 要么四处走动并登录(不太可能),要么其他用户能够以 Al 的身份登录以执行其权限不允许他们执行的任务。理想情况下,我希望有一个新列来突出显示当时来自不同 PC 上的用户 ID Al 的并发会话。记录 #4、6 和 8 将发出警报 - 记录 #2 和 7 正常,因为同一用户在同一台​​ PC 上登录。

答案1

您想要识别至少有一行具有相同用户 ID 且进入/退出时间范围重叠的行。这相当简单(至少在您知道答案之后)。第一步是找出间隔 Start 1 /End 1 与间隔 Start 2 /End 2重叠 当且仅当 Start 1  < End 2 和 End 1  > Start 2时。(如果您考虑一下,这很容易理解;如果您画出来就更容易了。)因此,对于每一行,我们希望计算登录/注销记录中上述情况为真的行,并且用户 ID 等于此行的用户 ID。这很简单

=COUNTIFS(A$2:A$9, "<"&B2, B$2:B$9, ">"&A2, C$2:C$9, "="&C2)

对于您的原始数据布局(其中时间是列 A暂停是 Column  B,并且用户是 Column  C)。这将计算出最小值为 1,因为每行都与自身重叠。您想查看哪些行重叠其他行,所以我们这样做

=IF(COUNTIFS(B$2:B$9, "<"&C2, C$2:C$9, ">"&B2, D$2:D$9, "="&D2) > 1,  "Overlap",  "")

一旦我改变了时间对于记录 #7(PC42 上的用户 Dave),从 16:46 到 16:56,以消除与记录 #2 的重叠(PC42 上的用户 Dave),我认为这是无意的,我得到了以下结果:

        电子表格

我相信这就是你想要的。

好的,如果用户在重叠的时间段内登录到一台 PC 是可能的并且是有效的(正如 Dave 在记录 2 和 7 中的 PC42 上所做的那样),并且您不希望这些被算作重叠,那么我们需要修改我们的公式以仅计算 PC 不同的行:

=IF(COUNTIFS(A$2:A$9, "<"&B2, B$2:B$9, ">"&A2, C$2:C$9, "="&C2, D$2:D$9, "<>"&D2) > 0, "Overlap", "")

请注意,我们必须将测试从 更改> 1> 0 因为行不再自身重叠。

相关内容