Excel里交叉表的左表头是卡车号,上表头是工作,交叉格是工作编号。
|---|--------------|------|------|------|
| | A | B | C | D |
| 1 | Truck Number | Job1 | Job2 | Job3 |
| 2 | 71 | 5928 | 5928 | 5928 |
| 3 | 72 | 3958 | 5928 | 2971 |
| 4 | 73 | 2971 | 5928 | 2971 |
要求:将交叉格转为列,左表头转为格。
|---|------|------|------|
| | A | B | C |
| 1 | 2971 | 3958 | 5928 |
| 2 | 72 | 72 | 71 |
| 3 | 73 | | 71 |
| 4 | 73 | | 71 |
| 5 | | | 72 |
| 6 | | | 73 |
使用 SPL XLL
=spl("=E@p(?.news(~.m(2:);~:T,get(1):S).group(T;~.(S(1)).sort():TS).(T|TS))",A2:D4)
news可按序列生成多条记录,~.m(2:) 表示从当前成员 ~ 的第 2 个子成员取到最后。get(1) 取上一级循环的成员。函数 E@p() 转置序列。