Excel 同一分类下进行跨行计算

例题描述

Excel 文件记录不同用户的事件发生时间,数据已按 USER ID 和 DATE 列排序,部分数据如下:

|---|---------|----------|------------|
| | A | B | C |
| 1 | USER ID | EVENT ID | DATE |
| 2 | 1 | 4 | 2020-01-01 |
| 3 | 1 | 5 | 2020-01-05 |
| 4 | 1 | 6 | 2020-01-13 |
| 5 | 2 | 7 | 2020-01-03 |
| 6 | 2 | 8 | 2020-01-05 |
| 7 | 2 | 9 | 2020-01-06 |

现在要计算事件真假列isTrue,规则是:同一个USER ID内,第1起事件一定为真,从第2起事件开始,如果与上一真事件的间隔大于等于10天,则该事件为真,其他事件均为假。结果应当如下:

|---|---------|----------|------------|--------|
| | A | B | C | D |
| 1 | USER ID | EVENT ID | DATE | isTrue |
| 2 | 1 | 4 | 2020-01-01 | 1 |
| 3 | 1 | 5 | 2020-01-05 | 0 |
| 4 | 1 | 6 | 2020-01-13 | 1 |
| 5 | 2 | 7 | 2020-01-03 | 1 |
| 6 | 2 | 8 | 2020-01-05 | 0 |
| 7 | 2 | 9 | 2020-01-06 | 0 |

解法及简要说明

使用 Excel 插件 SPL XLL

在 D1 单元格写入公式:

=spl("=E(?).new(if('USER ID'!='USER ID'[-1],(t=DATE,1),if(DATE-t>=10,(t=DATE,1),0)):isTrue)",A1:C7)

如图:

简要说明:

如果本行的 USER ID 与上一行不同,则说明当前行是组内第 1 起事件,此时赋值 isTrue=1,同时临时变量 t= 本行 DATE。如果本行的 USER ID 与上一行相同,则进入组内计算,用临时变量和本行的日期计算间隔,大于等于 10 时赋值 isTrue=1,同时修改临时变量 t= 本行 DATE。

相关推荐
Python大数据分析@5 小时前
Pandas相比Excel的优势是哪些?
excel·pandas
fengyehongWorld6 小时前
Excel 添加自定义选项卡
excel
斯特凡今天也很帅17 小时前
Excel在保留下拉选项的基础上,通过输入四级目录数据,在一级目录、二级目录、三级目录、五级目录的显示
excel
全栈开发圈2 天前
新书速览|Excel+DeepSeek会计与财务高效办公
语言模型·excel
ew452182 天前
【java】基于hutool实现.Excel导出任意多级自定义表头数据
java·开发语言·excel
SunnyDays10112 天前
使用 Python 在 Excel 中应用数据验证:详细指南
python·excel·数据验证
开开心心就好2 天前
模拟真人手写软件,支持随机调节
运维·服务器·windows·gitee·pdf·开源·excel
SunnyDays10112 天前
如何使用 Python 操作 Excel 图片:插入、提取与压缩
python·excel·提取图片·压缩图片·插入图片到excel·删除图片
骆驼爱记录2 天前
Word一键批量添加图章
自动化·word·excel·wps·新人首发
biuyyyxxx3 天前
Power Query功能区 - 主页
笔记·学习·excel