因此,有点矫枉过正,但对如何使用 power query 进行此操作很感兴趣,并且有兴趣为 MonthNumber 构建自定义函数。
Powerquery 是 2016 年之前的免费插件,内置于 2016 年
步骤:
1) 数据选项卡 (2016) 或 powerquery 选项卡 (2010 至 2016) => 选择 query from table 并确保您的源数据已被选中并显示在弹出窗口中
2) 选择第一个日期列,按住 shift 并选择最后一个日期,然后选择反透视列
3) 确保列属性(您的透视日期)被格式化为日期列
4) 打开高级查询编辑器窗口
在let和source之间粘贴以下内容
fnMonthNum = (input) => let
values = {
{"January", "1"},
{"February", "2"},
{"March", "3"},
{"April","4"},
{"May", "5"},
{"June", "6"},
{"July", "7"},
{"August", "8"},
{"September", "9"},
{"October", "10"},
{"November", "11"},
{"December", "12"},
{input, "Undefined"}
},
Result = List.First(List.Select(values, each _{0}=input)){1}
in
Result,
这是用于创建从月份名称返回月份数字的自定义函数的 M 代码。
5) 添加列选项卡 => 添加自定义列,将其重命名为 MonthName 并插入以下文本
=Date.ToText([Attribute],"MMMM")
6) 添加另一个自定义列,将其重命名为 MonthNum 并在此处使用我们的新函数:
= fnMonthNum([MonthName])
7) 删除现在不必要的属性列;选择列 => 右键单击 => 删除
8) 转换选项卡 => 分组并输入以下内容:
9) 确保 MonthNum 列是数字。
10) 关闭并加载到 => Only create connection,
勾选Add to data model的复选框,然后勾选Load
11) 按照此处的说明:CREATE A PIVOT TABLE USING EXCEL’S INTERNAL DATA MODEL
从功能区中选择 Insert→PivotTable。 “创建数据透视表”对话框打开。
选择使用External Data Source 选项,如图所示,然后单击Choose Connection 按钮。您会看到 Existing Connections 对话框,如图所示。
选择您刚刚为 Table1 创建的查询和数据透视表的目标
12) 根据需要排列字段并在 MonthNum 行字段上按升序排序
13) 插入切片器
注意:您可以引入自定义排序以避免必须使用 MonthNum 列进行排序。