如何通过数据透视图基于登录/登出记录统计在线用户数?
解决方法:先处理数据增量,再统计累计在线人数
直接用数据透视表的登录/登出状态没法直接算出在线人数,核心是要先把每个操作转化为在线人数的变化量,再通过累计求和得到任意时间点的在线人数,具体步骤如下:
1. 给原始数据添加「在线增量」辅助列
在你的表格里新增一列(比如列E,表头设为Online Change),用公式判断每个操作对在线人数的影响:
- 登录(Log in)会让在线人数+1,登出(Log out)会让在线人数-1
- 公式示例(假设Status在B列,第一行是表头,从第二行开始计算):
下拉填充所有行后,你的数据会变成:=IF(B2="Log in", 1, -1)Id Status Date Online Change A Log in 01.01.2018 01:44:03 1 A Log out 01.01.2018 02:57:03 -1 C Log in 01.01.2018 01:55:03 1 C Log out 01.01.2018 01:59:03 -1
2. 生成完整的时间序列(包含你关心的特定时间点)
在线人数只会在登录/登出时刻变化,中间时间段人数保持不变。所以我们需要整理出所有关键时间点:
- 先把原始数据里的所有
Date值复制到一个新列(比如列D) - 手动添加你需要查询的时间点(比如
01.01.2018 01:56:00) - 选中这列数据,点击「数据」→「删除重复值」,然后按时间升序排序
3. 计算每个时间点的累计在线人数
在时间序列旁边新增一列(比如列E,表头设为Total Online),用公式计算到当前时间点为止的累计在线人数:
- 公式示例(假设原始Date在C列,Online Change在E列,时间序列在D列):
下拉填充后,你就能看到每个时间点的在线人数:=SUMPRODUCT(--(C$2:C$5<=D2), E$2:E$5)Date Total Online 01.01.2018 01:44:03 1 01.01.2018 01:55:03 2 01.01.2018 01:56:00 2 01.01.2018 01:59:03 1 01.01.2018 02:57:03 0
4. 创建折线图展示在线人数
选中时间序列列和累计在线人数列,插入折线图,就能直观看到任意时间点的在线人数变化,包括你关心的01:56时刻有2位用户在线。
内容的提问来源于stack exchange,提问作者Catalin Vasilescu
相关产品推荐
相关产品推荐

