需要数据透视表来显示具有逗号分隔值的列

Kev*_*vin 2 csv excel transpose pivot survey

因此,我找到了一些其他解决方案来解决我遇到的类似问题,但并不十分准确。我正在 Excel 中解释调查结果,其中调查工具 (Qualtrics) 已将多个选择问题(“选择所有适用的”)的回答放在单个单元格中,以逗号分隔。我需要在数据透视表中计算个人回复的计数,其中我还将从一些受访者人口统计数据中获取总计,并将其添加到回复电子表格中。我想做的与此非常相似:

将逗号分隔的条目拆分为新行

但是,我的工作表将有多列,并以逗号分隔响应,如下所示:

现有数据

....我需要它的列格式,这样我就可以旋转和计数。正如我提到的,我将添加一些属性数据(HR 数据,这就是为什么我无法将其导入 Qualtrics - 无法发送到公司外部),所以我仍然需要将人员与响应配对。但是,如果有一个脚本或命令可以为我运行并拆分它,我不确定它将如何处理从列到列的不同数量的响应以创建所需的行(例如示例中的 Bill 和 Karen) 。我是否需要首先拥有最长的 csv 单元格的列等等?然而,它看起来像这样:

所需数据

我可以做些什么来实现这个目标吗?

tey*_*lyn 5

您想要的布局实际上也不适合正确的数据透视表。您需要一个真正平坦的表格结构,这样您就可以过滤喜欢的内容,而无需同时隐藏不喜欢的内容。

您可以使用 Power Query 轻松转换数据。将数据加载到 Power Query 编辑器中,然后用分隔符“,”(逗号后跟空格)分隔每个问题列。这会将每个答案分成自己的列,标题中的问题附加 .1、.2 等。

然后选择名称列并单击“取消透视其他列”。问题标题现在将位于属性列中。通过分隔符“.”拆分该属性列。(点)并删除带有拆分数字的列。

最后,将列重命名为问题和答案。

这是执行此操作时生成的 M 代码。

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"like", type text}, {"dislike", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "dislike", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), {"dislike.1", "dislike.2", "dislike.3", "dislike.4", "dislike.5"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"dislike.1", type text}, {"dislike.2", type text}, {"dislike.3", type text}, {"dislike.4", type text}, {"dislike.5", type text}}),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "like", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), {"like.1", "like.2", "like.3", "like.4"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"like.1", type text}, {"like.2", type text}, {"like.3", type text}, {"like.4", type text}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type2", {"Name"}, "Attribute", "Value"),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Attribute.1", "Attribute.2"}),
    #"Changed Type3" = Table.TransformColumnTypes(#"Split Column by Delimiter2",{{"Attribute.1", type text}, {"Attribute.2", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type3",{"Attribute.2"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Attribute.1", "question"}, {"Value", "Answer"}})
in
    #"Renamed Columns"
Run Code Online (Sandbox Code Playgroud)

结果表如下所示:

在此输入图像描述

如果您的原始数据收到更多行,只需刷新查询即可。

现在您有了一个可以在数据透视中使用的表,而不会影响任何数据。