在 Excel 中,我有以下内容(类似 csv 的摘录):
groupname origin destination speed winner
client1 paris newyork 100 bob
client1 paris tokyo 200 joe
client1 paris london 100
client1 tokyo paris 213 kok
client1 tokyo newyork 234 lok
client1 newyork paris 233
我怎样才能将上述内容转换为 Client1 的速度表?
paris newyork london tokyo
paris 100, bob 100 200, joe
newyork 233
london
tokyo 213, kok 234, lok
我不知道该如何称呼它,但这与旧地图上的距离表非常相似。
因为我想报告结果表中的值,所以我不确定数据透视表是否是正确的选择。谢谢!
答案1
我会使用 Power Query 插件来解决这个问题。需要几个步骤才能实现,还需要使用 Power Query 语言 (M) 进行一些编码来调用 Table.Pivot 函数(该函数未在 Power Query UI 中显示)。
我已经构建了一个原型,您可以查看或下载它 - 我的 One Drive 中的“Power Query 演示 - 将行透视为列.xlsx”:
https://onedrive.live.com/redir?resid=4FA287BBC10EC562%21398
基本上,我的技巧是添加一个计算列来合并 Speed 和 Winner(例如 100,bob),并删除原始的 Speed 和 Winner 列。然后我使用 Table.Pivot 函数为目标列中的每个唯一值生成一列。
Table.Pivot 的文档在这里:
http://office.microsoft.com/en-au/excel-help/table-pivot-HA104111995.aspx?CTT=5&origin=HA104122363
使用 Table.Pivot 的另一个示例如下:
http://cwebbbi.wordpress.com/2013/11/25/pivoting-data-in-power-query/
答案2
您可以使用数据透视表快速完成此操作。只需选择所有数据(包括列标题)并单击Pivot Table
功能Insert
区即可。选择数据透视表的位置后,只需将字段拖放到数据透视表字段列表中,如下所示:
Report Filter: groupname
Row Labels: origin
Column Labels: destination
Values: speed ('Sum of' is what you want)
就这样就大功告成了。您只需client1
从位于数据透视表上方的报告过滤器中进行选择即可。
您还可以更改数据透视表设置,以便不显示总计行和总计列。