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。

相关推荐
破z晓14 小时前
javascript 导出excel表
开发语言·javascript·excel
Am-Chestnuts19 小时前
豆包多轮回答中的表格导出 Excel:编号、日期与长数字检查
excel
hPw0eKIqD1 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET中的区域、行和列
excel·wps
冰心孤城2 天前
Excel: xls与xlsx格式转换排坑指南
java·前端·excel
金豆呀2 天前
WPS批量提取Word文档内容生成固定格式Excel表格
word·excel·wps
Access开发易登软件2 天前
Access 怎么做前后端分离?用 Web API 读写 SQL Server
前端·数据库·人工智能·microsoft·excel·access
红莲凪是3 天前
使用二次封装的Excel COM 组件操作Excel\WPS ET IExcelRange 高级应用
python·excel·wps
用户298698530143 天前
如何使用免费工具在线将 Excel 转换为 XML 格式
人工智能·后端·excel
开开心心就好3 天前
内存清理工具定时自动清理开机自启动
java·开发语言·elasticsearch·ocr·excel·音视频·big data
开开心心就好3 天前
电脑内存优化工具一键释放内存超简单
java·开发语言·macos·arcgis·ocr·excel·音视频