有没有一种方法可以使用列表而不是Excel中的汇总来透视字段?

时间:2020-10-23 15:22:48

标签: excel pivot-table

如果这个问题重复出现,我真的很抱歉,但是我的google fu失败了我,我找不到解决问题的答案。

我想按列表而不是汇总透视表数据。我真的不能把它写成单词(对不起,但英语不是我的母语),所以让我给大家展示一个例子。

我的数据具有以下结构:

Project | Due Date (dd/mmm/aa)
A       | 15/jan/21
B       | 20/jan/21
C       | 31/jan/21
D       | 15/feb/21
E       | 22/feb/21
F       | 01/mar/21
G       | 10/mar/21
H       | 27/mar/21
I       | 30/mar/21

使用Excel数据透视表很容易获得这种汇总:

        |      2021       |
        | jan | feb | mar |
Project |  3  |  2  |  4  |

现在我真正想要的是一个像下面这样的列表,即使我的生活很艰辛,我也无法从数据透视表中获取该信息:

| jan | feb | mar |
|  A  |  D  |  F  |
|  B  |  E  |  G  |
|  C  |     |  H  |
|     |     |  I  |

我可以通过在电子表格中使用INDEX,ROW,COL和MATCH函数的组合来到达那里,但是我感觉有一种更简单的方法,我太愚蠢了。

任何人都可以向我展示这种更好的方法,或者为我提供一些文档吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为仅使用一个数据透视表是无法解决此问题的(数据透视表旨在将值汇总到两个轴的矩阵中,在此不做任务)。但是,您可以通过每月彼此相邻使用一个数据透视表来获得相同的结果,如果数据集中的不同月份在某种程度上是可以预测的,则可以使用该数据透视表-但我承认这不是一个很好的解决方案。

不提供完全相同的结果,但可以作为下一个最佳选择的另一种方法是,将Project放在行和值(计数)上,将Month(到期日期)放在列上,以得到以下结果:< / p>

Alternative solution - result

Alternative solution - structure

即使这不是您要的内容,但我想值得一提的是,使用Power Query而不是Pivot Table转换表可能是一种更好的方法

编辑: 这是一个为您解决问题的Power查询解决方案。 创建一个表并确保其名为“ Table1”,或在代码中编辑该引用。表结构与OP中的示例相同。

Here's the result I got from PQ(不要介意标题语言)

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Project ", type text}, {" Due Date (dd/mmm/aa)", type datetime}}),
    #"Inserted Month Name" = Table.AddColumn(#"Changed Type", "Month Name", each Date.MonthName([#" Due Date (dd/mmm/aa)"]), type text),
    #"Sorted Rows" = Table.Sort(#"Inserted Month Name",{{" Due Date (dd/mmm/aa)", Order.Ascending}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Sorted Rows",{" Due Date (dd/mmm/aa)"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns1", {"Month Name"}, {{"Data", each _, type table [#"Project "=text, #" Due Date (dd/mmm/aa)"=datetime, Month Name=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Index", each Table.AddIndexColumn([Data], "Index", 1, 1)),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Data"}),
    #"Expanded Index" = Table.ExpandTableColumn(#"Removed Columns", "Index", {"Project ", "Index"}, {"Project ", "Index.1"}),
    #"Pivoted Column1" = Table.Pivot(#"Expanded Index", List.Distinct(#"Expanded Index"[#"Month Name"]), "Month Name", "Project "),
    #"Removed Columns2" = Table.RemoveColumns(#"Pivoted Column1",{"Index.1"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns2", List.Distinct(#"Removed Columns2"[#"Month Name"]), "Month Name", "Project ")
in
    #"Pivoted Column"

答案 1 :(得分:0)

您愿意接受其他输出格式吗?如果创建数据透视表并添加到数据模型,则可以选择使用ConcatenateX DAX公式作为数据透视表中的度量。输出可能如下所示(列出了两个选项:)

enter image description here