某表格有 1 个分组列和 2 个明细列。
|----|--------|--------|---------|
| | A | B | C |
| 1 | Object | Name | Info |
| 2 | 12A | Gggtz | 44456 |
| 3 | 12A | Gggtr | 99987 |
| 4 | 12A | Kkkio | 66543 |
| 5 | 12A | Bbvgf | 66643 |
| 6 | 12A | Vvvhg | 888765 |
| 7 | 12A | Fffgt | 87 |
| 8 | 6F | Gggtf | 232325 |
| 9 | 6F | Xxxde | 443216 |
| 10 | P23 | Cccvb | 5543287 |
| 11 | P23 | Vvvbj | 5656564 |
| 12 | P23 | Sswec | 8989764 |
| 13 | P23 | Llloiu | 343432 |
现在要把组内的多列明细拼成一行,并自动生成与列数相符的列头
|-----------------------------------------------------------------------------------|--------|-------|---------|-------|---------|-------|---------|--------|--------|-------|--------|-------|-------|
| | E | F | G | H | I | G | K | L | M | N | O | P | Q |
| 1 | Object | Name1 | Info1 | Name2 | Info2 | Name3 | Info3 | Name4 | Info4 | Name5 | Info5 | Name6 | Info6 |
| 2 | 12A | Gggtz | 44456 | Gggtr | 99987 | Kkkio | 66543 | Bbvgf | 66643 | Vvvhg | 888765 | Fffgt | 87 |
| 3 | 6F | Gggtf | 232325 | Xxxde | 443216 | | | | | | | | |
| 4 | P23 | Cccvb | 5543287 | Vvvbj | 5656564 | Sswec | 8989764 | Llloiu | 343432 | | | | |
使用 SPL XLL,输入公式:
=spl("=d=E(?).group@o(Object).(Object|(~.conj([Name,Info]))), [$[Object]|(d.max(~.len())\2).conj([$[Name] / #,$[Info] / #])] | d",A1:C13)
函数 E 读取表格数据。group@o 分组前不排序。$[] 表示字符串。~ 是当前成员,# 是当前成员的序号