拆开不同类型的字符

举例

有Excel文件book1.xlsx中有下图所示的考勤数据,某一天某位员工有多种考勤现象,如 A 表示迟到,A 后面的数字表示迟到时间,B 表示早退,B 后面的数字表示早退时间,C 表示请假,C 后面的数字表示请假时间,以此类推。现在想要对这种情况进行汇总,分别统计每种字母后面的数字和,填在图中的Total区域。

编写SPL脚本:

A
1=clipboard().split@t("\t")
2=create(type,value)
3=A1.(~.words@wp().run(if(#%2==1,A2.record([~,number(~[1])]))))
4=A2.groups(type;sum(value))
5=clipboard(A4.export())

A1   从剪贴板里读取数据后,用\t作为分隔符拆分成序列,即得到每个单元格中的字符串,选项@t表示拆分后删除两边的空白

A2   构建有type和value两列的序表

A3   循环每个单元格串,将串拆分成单词,选项@w表示拆出所有字符,汉字或符号拆成单个字符,英文或数字拆成单词;选项p表示数字开头部分将根据数据类型识别为数值或日期,拆成一个整体。拆分以后,循环拆分出的序列,如果当前成员序号是单数,则取当前成员和它的下一个成员转成数值后构成一条记录保存到A2中

A4   对A2按type分组,统计value之和

A5   把A4转换成字符串后放进剪贴板

先打开文件book1.xlsx,选择数据A3:G3,然后按Ctrl+C复制到剪贴板。在集算器中运行SPL脚本,结束后再回到Excel文件,点击B7,按Ctrl+V把剪贴板中的计算结果粘贴过来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值