Power Query 在 Excel 2010+ 中可用,可用于创建此类报告。
(我尝试使用数据透视表,但无法按照您的喜好显示列标题,并且也正确排序。)
要使用 Power Query,根据您的 Excel 版本,转到“数据”选项卡并选择“从表/范围获取和转换”(或 2016 之前版本中的等效项)。
然后:
- 将日期/时间列仅转换为日期
- 为一周的开始添加一列并将其格式化
dd/MM/yyyy
- 为一周开始 + 6 天添加一列并格式化
dd/MM/yyyy
- 使用“
-”作为分隔符合并 wkStart 和 wkEnd 列。
- 删除现在不需要的列
-
Group 按周和查看者 ID,按唯一行数聚合
瞧!
以上所有操作都可以通过 Power Query 的 UI 完成。下面是生成的 M-Code。
如果您将数据转换为表格,您只需将 M-Code 粘贴到 PQ 编辑器中,然后将第二行中的表格名称更改为您的表格的真实名称。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Viewer ID", Int64.Type}, {"DatTime", type date}, {"ShowID", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "wkStart", each Date.ToText(Date.StartOfWeek([DatTime],Day.Monday),"dd/MM/yyyy")),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "wkEnd", each Date.ToText(Date.AddDays(Date.StartOfWeek([DatTime],Day.Monday),6),"dd/MM/yyyy")),
#"Inserted Merged Column" = Table.AddColumn(#"Added Custom1", "Week", each Text.Combine({[wkStart], [wkEnd]}, " - "), type text),
#"Removed Columns" = Table.RemoveColumns(#"Inserted Merged Column",{"wkStart", "wkEnd", "DatTime"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"Week", "Viewer ID"}, {{"Count", each Table.RowCount(Table.Distinct(_)), Int64.Type}}),
#"Pivoted Column" = Table.Pivot(#"Grouped Rows", List.Distinct(#"Grouped Rows"[Week]), "Week", "Count", List.Sum)
in
#"Pivoted Column"