例题描述
有 Excel 数据如下所示:
B | C | D | ||
1 | Name | Fruit1 | Fruit2 | Fruit3 |
2 | Alice | apple | banana | orange |
3 | Bob | apple | pear | plum |
4 | Cate | banana | pear | plum |
… |
需要行列转换,结果如下:
A | B | C | D | |
1 | Fruit | Name1 | Name2 | …… |
2 | apple | Alice | Bob | |
3 | banana | Alice | Cate | |
4 | orange | Alice | ||
5 | pear | Bob | Cate | |
6 | plum | Bob | Cate |
解法及简要说明
使用插件 SPL XLL
在空白格填写代码:
=spl("=E(?1).pivot@r(Name;Fruit,Fruitname).group(Fruitname).run(~=~.Fruitname|~.(Name))",Sheet1!A1:D4)
如图:
返回结果:
代码解释:用 pivot 做列转行,再按 Fruitname分组,每组计算出 Fruitname 值并 Name 列的结果。