我想按两列对数据透视表进行排序。我在网上搜索了一段时间,似乎 Excel 不允许这样做,所以我需要一个解决方法。
我的数据
期望的结果
我想按客户汇总这些信息,按订单数量排序,然后按订单总价值排序 - 所以这是我期望看到的表格的模型:
使用数据透视表的实际结果
我的透视表实际上如下所示。如果我按订单数量排序,则值列的顺序是错误的。如果我按值排序,则计数的顺序是错误的。透视表没有按次要列对相等值进行排序的概念。
问题
如何按多列对 Excel 数据透视表进行排序?
笔记:我知道如果你有两组行标签,你可以按多列对数据透视表进行排序,就像我在这里展示的那样。但在这种情况下,由于各种原因,我只想要一组行标签。
答案1
使用计算字段
我发现实现此目的的最佳方法是向表中添加一个产生正确排序顺序的计算字段,然后隐藏该列。
排序顺序字段需要通过按比例放大或缩小每个排序列来工作,以便输出排序值的任何列的位都不与任何其他列重叠。
因此,我将 OrderCount 放大一个大数字,并将总值缩小一个大数字:
= (OrderCount*1000) + (Value/1000)
对于上面的 Jemaine 的人物,这将产生一个值3000.18
。Bret 将是3000.07
,Murray/Brian1000.09
等等 - 正确的顺序。
如果我想添加第三个排序条件,我必须将其缩小一个更大的数字:
= (OrderCount*1000) + (Value/1000) + (3rdCondition/1000000)
添加计算字段
为了在数据透视表中实际实现这一点,我需要在数据表中添加一列,以便计算字段可以计算订单。我只是添加了一列并将每行的OrderCount
值设置为:1
现在我们可以添加计算字段。从功能区中选择此选项并输入公式:
我的数据透视表现在看起来像这样,排序正确。
整理
这个 SortOrder 列可能会让其他用户感到困惑,所以我可以隐藏整个列。
但是,我通常不想隐藏列(个人偏好),因此,为了使此列不显眼,我可以将此列重命名为(即空白区域),并将 SortOrder 值的数字列格式化为自定义格式
"";"";""
。如果 Excel 自动调整列宽,则几乎不会引人注意。