A1 格由多个人名及其考勤情况组成,比如,c 是十六进制的 1100,表示第 1、2 天到场,第 3、4 天缺席。目前只有 4 天的考勤。
A | B | |
1 | alice,c,bob,7,clara,a,mike,9 | /input: name and presence |
2 | 2 | /input: the day to be queried |
要求根据 A2 中输入的天数,查询当天有多少人到场。比如第 1 天 3 人到场,第 3 天 2 人到场。
使用 SPL XLL,输入公式:
=spl("=theDay=shift(1,?2-4),?1.split@c().step(2,2).count(and(bits@h(~),theDay)>0)",A1,A2)
函数 shift 用于整数移位,step(2,2) 表示隔 2 位取第 2 个成员,bits@h解析十六进制数,and 用于 bit 的 "与" 运算,~ 表示当前成员。