Excel 对于具有逗号分隔值的列,需要透视表

Excel 对于具有逗号分隔值的列,需要透视表,excel,csv,pivot,transpose,survey,Excel,Csv,Pivot,Transpose,Survey,所以,我找到了一些其他的解决方案来解决我遇到的类似问题,但不是很精确。我在Excel中解释调查结果,调查工具(Qualtrics)将多个选择问题(“选择所有适用问题”)的回答放在一个单元格中,逗号分隔。我需要在数据透视表中计算出个人回答的数量,在数据透视表中,我还将从一些受访者人口统计数据中获取总数,我将添加到回答电子表格中。我试图做的与此非常相似: 但是,“我的工作表”将有多个带有逗号分隔响应的列,如下所示: ..我需要它的列格式,以便我可以旋转和计数。正如我提到的,我将添加一些属性数据(

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

但是,“我的工作表”将有多个带有逗号分隔响应的列,如下所示:

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


我能做些什么来实现这一点吗?

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

您可以使用Power Query轻松转换数据。将数据加载到Power Query Editor中,然后用分隔符“,”(逗号后跟空格)拆分每个问题列。这将把每个答案分成它自己的一列,标题中的问题附加.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"
生成的表如下所示:

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


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

不确定您想要实现什么(可能一次完成的事情太多),至少在问题的第一部分:每个类别的响应计数您可以这样做:

对于每个响应列,创建一个计数列,例如:

名称、响应、列、计数

计数公式:逗号计数+1

在excel中,可以使用以下公式进行计算:

你现在有: 1) 答复数 2) 可以生成每个类别的响应总数,例如Karen的响应A计数