Excel某表格有四列,其中第2列是分组列。
|---|---|---|---|------|
| | A | B | C | D |
| 1 | 1 | a | 1 | yet |
| 2 | 2 | a | 2 | done |
| 3 | 3 | a | 3 | yet |
| 4 | 4 | b | 1 | done |
| 5 | 5 | b | 2 | done |
| 6 | 6 | b | 3 | done |
| 7 | 7 | b | 4 | yet |
| 8 | 8 | b | 5 | done |
现在要按第2列分组,找到每组第4列等于"done"的行,将这些行的第3列用逗号拼起来,再与分组名、行号组成新的表格。
|---|---|---|-------|
| | F | G | H |
| 1 | 1 | a | 2 |
| 2 | 2 | b | 1,2,3 |
使用 SPL XLL
=spl("=?.select(~4==$[done]).groups(~2;concat@c(~3)).(#|#1|#2)",A1:D7)
函数 group 执行分组并处理每组数据,~2 表示当前成员的第 2 个子成员,$[] 是字符串标志,# 是当前成员的序号,#1 是表格的第 1 列,concat@c 用逗号合并成员。