excel将数据从单行转换为多行

标签 excel pivot powerquery

我在下面的示例保险数据中包含每个 ID 的单行中的家庭详细信息。

ID      Enrollment date  Area   Full Name   Gender  DOB         Sum Insured Spouse Name  Gender DOB         Kid1_Name   Gender  DOB         Kid2_Name   Gender  DOB
29348   24-01-2021       17     NAINAR  M   Male    17-Mar-1982 500000      SUBBULAKSHMI FEMALE 21-Jun-1988 GOKULSRIRAM MALE    31-Oct-2007 SRIDHAR     MALE    19-Feb-2009
23434   19-04-2020       17     Kishore     Male    12-Jun-1986 200000       A Savitha   Female 10-Jun-1991 Sathvik     Male    4-Mar-2014  A Saketh    male    13-Feb-2015
46565   01-05-2020        5     Ragu        Male    6-Aug-1996  300000                                  

我正在尝试转换如下格式的数据,以便家庭详细信息显示在行中
尝试在 excel 中使用数据透视表选项和电源查询选项,但没有运气。
enter image description here
在excel中可以吗?
谢谢

最佳答案

这是在 powerquery 中执行此操作的一种笨方法
(a) 将多组列合并在一起 (b) 取消透视 (c) 再次拆分这些列

let  Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Self", each "Self"),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Spouse", each "Spouse"),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Child1", each "Child1"),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Child2", each "Child2"),
#"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Added Custom3", {{"DOB", type text}, {"Sum Insured", type text}}, "en-US"),{"Full Name", "Gender", "DOB", "Self","Sum Insured"},Combiner.CombineTextByDelimiter("::", QuoteStyle.None),"m1"),
#"Merged Columns1" = Table.CombineColumns(Table.TransformColumnTypes(#"Merged Columns", {{"DOB3", type text}}, "en-US"),{"Spouse Name", "Gender2", "DOB3", "Spouse"},Combiner.CombineTextByDelimiter("::", QuoteStyle.None),"m2"),
#"Merged Columns2" = Table.CombineColumns(Table.TransformColumnTypes(#"Merged Columns1", {{"DOB5", type text}}, "en-US"),{"Kid1_Name", "Gender4", "DOB5", "Child1"},Combiner.CombineTextByDelimiter("::", QuoteStyle.None),"m3"),
#"Merged Columns3" = Table.CombineColumns(Table.TransformColumnTypes(#"Merged Columns2", {{"DOB7", type text}}, "en-US"),{"Kid2_Name", "Gender6", "DOB7", "Child2"},Combiner.CombineTextByDelimiter("::", QuoteStyle.None),"m4"),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Merged Columns3", { "ID", "Enrollment date", "Area"}, "Attribute", "Value"),
#"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Value", Splitter.SplitTextByDelimiter("::", QuoteStyle.Csv), {"Name", "Gender", "Date of Birth", "Relation", "Insured amount"}),
#"Filtered Rows" = Table.SelectRows(#"Split Column by Delimiter", each ([Name] <> "")),
#"Changed Type" = Table.TransformColumnTypes(#"Filtered Rows",{{"Date of Birth", type datetime}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Changed Type",{{"Date of Birth", type date}, {"Enrollment date", type date}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Attribute"})
in  #"Removed Columns"
enter image description here
请注意,如果您将具有相同列标题的多个列加载到 powerquery 中,则标题将更改为在其后有数字。您可能需要更新代码来修复 Date Birth 和 Gender 的列名

关于excel将数据从单行转换为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72200483/

相关文章:

powerbi - 如何复制在 DAX 中创建的表以在 Power Query 中使用以进行转换?

excel - 根据excel单元格中的链接获取网络数据

excel - 在线共享和保护 Excel 文档(使用 Powerpivot),无需 Sharepoint 和 Power BI?

excel - SUM 数字,但当为 0 时,加 8 代替

sql - 数据透视表字符串在数据透视列下分组?

HTML5 : Image rotating around pivot, 方向错误

excel - 删除组中的最后一行

mysql - 从 MySql 导出结果集为制表符分隔文件。带逗号的字符串在字符串周围有引号,为什么?

excel - 有没有办法使用单元格的格式化输出,而不是未格式化的值?

sql - 对分层数据进行 PIVOT