ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 690|回复: 1

同类数据连续时使用同类相邻行计算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-10-11 09:41 | 显示全部楼层 |阅读模式
举例 文件book1.xlsx记录用户的事件发生时间,数据已按USER ID和DATE列排序,部分数据如下:
image.png
现在要计算事件真假列isTrue,规则是:同一个USER ID内,第1起事件一定为真,从第2起事件开始,如果与上一真事件的间隔大于等于10天,则该事件为真,其他事件均为假。结果应当如下:
image.png
编写SPL脚本:

A
1
=T("e:/work/book1.xlsx")
2
=A1.derive(if('USER   ID'!='USER ID'[-1],(t=DATE,1),if(DATE-t>=10,(t=DATE,1),0)):isTrue)
3
=T("e:/work/book2.xlsx",A2)
A1   读入文件book1.xlsx中数据
A2   新增一列isTrue并计算它的值:如果本行的USER ID与上一行不同,则说明当前行是组内第1起事件,此时返回值1,同时临时变量t=本行DATE。如果本行的USER ID与上一行相同,则进入组内计算,用临时变量和本行的日期计算间隔,大于等于10时返回值1,同时修改临时变量t=本行DATE。'USER ID'[-1]表示上一行的USER ID值。
A3   将A2的结果保存到文件book2.xlsx

TA的精华主题

TA的得分主题

发表于 2021-10-11 18:11 | 显示全部楼层
本帖最后由 hcm19522 于 2021-10-11 18:26 编辑

D2=IF(COUNTIF(A$2:A2,A2)>1,(C2-OFFSET(C$1,MATCH(A2,A:A,)-1,)>=10)*1,1)
8962.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:44 , Processed in 0.026773 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表