You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Excel数据透视表计算用户消息的送达与打开时间间隔小时数?

用Excel数据透视表计算邮件送达与打开的时间间隔小时数

先把你的原始数据整理成更清晰的表格形式:

usersg_message_ideventdatetime
john playerekjf939e9313140_34kdelivered04/13/2018 12:56:30
john playerekjf939e9313140_34kopened04/15/2018 16:05:00
cristian diordsfsk0340344030fkjkjdelivered04/12/2018 18:45:21
cristian diordsfsk0340344030fkjkjopened04/13/2018 15:40:17

你的数据是每行对应一个事件(送达/打开),但透视表需要同一行里同时有两个时间才能计算间隔,所以得先把数据规整成「每个唯一sg_message_id一行,同时包含送达、打开时间」的结构,再做透视。下面是具体操作步骤:

步骤1:把送达和打开时间整合到同一行

这里给你两种方法,选你顺手的来:

方法A:用XLOOKUP公式快速匹配

假设原始数据在A1:D5区域(A1是表头),新增两列:

  • E列表头设为Delivered Time,在E2输入公式:
    =IF(C2="delivered", D2, XLOOKUP(B2, B:B, IF(C:C="delivered", D:D, ""), ""))
    
  • F列表头设为Opened Time,在F2输入公式:
    =IF(C2="opened", D2, XLOOKUP(B2, B:B, IF(C:C="opened", D:D, ""), ""))
    

下拉填充公式后,每个sg_message_id对应的两个时间就会出现在同一行里了。如果某条记录只有单一事件,对应单元格会显示空值,后续可以用IFERROR做容错处理。

方法B:用Power Query批量转置(适合大数据量)

  1. 选中原始数据区域,点击「数据」选项卡 → 「从表格/范围」,确认勾选「我的表格有标题」,进入Power Query编辑器。
  2. 选中usersg_message_id列,点击「转换」选项卡 → 「透视列」。
  3. 在弹出的设置框里:
    • 值列选择datetime
    • 高级选项选「不要聚合」
  4. 点击确定后,直接就能得到每个sg_message_id一行、包含送达/打开时间的表格,最后点击「关闭并上载」把数据导回Excel。

步骤2:计算时间间隔小时数

新增G列,表头设为间隔小时数,在G2输入公式:

=IF(AND(E2<>"", F2<>""), (F2-E2)*24, "")

解释一下:F2-E2得到的是天数差,乘以24就能转换成小时数;AND函数用来确保两个时间都存在才计算,避免出现错误值。

步骤3:用数据透视表汇总结果

  1. 选中整理好的包含间隔小时数的数据集(A1:G5),点击「插入」选项卡 → 「数据透视表」,选择透视表的放置位置。
  2. 在透视表字段面板里:
    • usersg_message_id拖到「行」区域
    • 间隔小时数拖到「值」区域,默认是求和(因为每个sg_message_id只有一个间隔值,求和/平均值/最大值结果都一样),你可以右键值区域的字段,选择「值字段设置」改成更直观的名称,比如「送达至打开间隔小时数」。

这样就能得到每个用户、每个唯一sg_message_id对应的时间间隔汇总结果啦!如果有缺失事件的记录,透视表里会显示空白,你可以根据需求调整容错逻辑。

内容的提问来源于stack exchange,提问作者sifar

火山引擎 最新活动