动态旋转 excel 中的多个列
Dynamically Pivot Multiple Columns in excel
我有以下数据,我希望将其转换为右侧的 table。 (请注意,此数据是手动输入的,可能存在错误)
我不确定旋转是否是解决此问题的正确方法,但如果我只有一列,它会达到预期的效果。
源数据已经应用了一系列的转换来简化到这个阶段,但是我现在正在研究尝试实现右边的table。
我很感激我可以创建一系列自定义列我希望这个 table 动态工作,这样如果用户要创建不同的 Dose Descriptor
将动态生成一个新列.再次为简单起见,我只使用 NOAEL
、DNEL
和 ADI
作为剂量描述符,但其他的例如TUL
存在。
我会在这里更新我取得的任何进展,但不幸的是,我只是在尝试这样做时感到困惑。
数据:
CAS 编号
77-92-9
77-92-9
106-24-1
106-24-1
106-24-1
7632-00-3
107-41-5
107-88-1
107-88-1
107-88-1
497-19-8
497-19-9
1300-72-7
99-76-3
化学名称
citric acid/ 2-Hydroxypropane-1,2,3-tricarboxylic acid
citric acid/ 2-Hydroxypropane-1,2,3-tricarboxylic acid
GERANIOL
GERANIOL
GERANIOL
Sodium nitrite
2-Methyl-2,4-pentanediol
1,3-Butylene glycol
1,3-Butylene glycol
1,3-Butylene glycol
sodium carbonate
sodium carbonate
Sodium xylenesulfonate
Methyl 4-hydroxybenzoate
剂量描述符
NOAEL
DNEL
NOAEL
DNEL
ADI
DNEL
DNEL
NOAEL
DNEL
ADI
ADI
NOAEL
NOAEL
DNEL
使用来自 table/range [x]headers
的数据将数据加载到 powerquery
单击 select 前 4 列,右键单击,取消透视其他列
添加列...自定义列...使用公式
= [Dose] & " " & [Attribute]
右键单击并删除剂量和属性列
单击 select 自定义列并转换...数据透视列 ..
使用VALUE作为值列,高级,不聚合
文件 .. 关闭并加载
示例代码:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"No.", Int64.Type}, {"CAS Number", type text}, {"Chemical name", type text}, {"Dose", type text}, {"Oral", Int64.Type}, {"Inhale", Int64.Type}, {"Dermal", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"No.", "CAS Number", "Chemical name", "Dose"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "Custom", each [Dose] & " " &[Attribute]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Dose", "Attribute"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Custom]), "Custom", "Value")
in #"Pivoted Column"
我有以下数据,我希望将其转换为右侧的 table。 (请注意,此数据是手动输入的,可能存在错误)
我不确定旋转是否是解决此问题的正确方法,但如果我只有一列,它会达到预期的效果。
源数据已经应用了一系列的转换来简化到这个阶段,但是我现在正在研究尝试实现右边的table。
我很感激我可以创建一系列自定义列我希望这个 table 动态工作,这样如果用户要创建不同的 Dose Descriptor
将动态生成一个新列.再次为简单起见,我只使用 NOAEL
、DNEL
和 ADI
作为剂量描述符,但其他的例如TUL
存在。
我会在这里更新我取得的任何进展,但不幸的是,我只是在尝试这样做时感到困惑。
数据:
CAS 编号
77-92-9
77-92-9
106-24-1
106-24-1
106-24-1
7632-00-3
107-41-5
107-88-1
107-88-1
107-88-1
497-19-8
497-19-9
1300-72-7
99-76-3
化学名称
citric acid/ 2-Hydroxypropane-1,2,3-tricarboxylic acid
citric acid/ 2-Hydroxypropane-1,2,3-tricarboxylic acid
GERANIOL
GERANIOL
GERANIOL
Sodium nitrite
2-Methyl-2,4-pentanediol
1,3-Butylene glycol
1,3-Butylene glycol
1,3-Butylene glycol
sodium carbonate
sodium carbonate
Sodium xylenesulfonate
Methyl 4-hydroxybenzoate
剂量描述符
NOAEL
DNEL
NOAEL
DNEL
ADI
DNEL
DNEL
NOAEL
DNEL
ADI
ADI
NOAEL
NOAEL
DNEL
使用来自 table/range [x]headers
的数据将数据加载到 powerquery单击 select 前 4 列,右键单击,取消透视其他列
添加列...自定义列...使用公式
= [Dose] & " " & [Attribute]
右键单击并删除剂量和属性列
单击 select 自定义列并转换...数据透视列 ..
使用VALUE作为值列,高级,不聚合
文件 .. 关闭并加载
示例代码:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"No.", Int64.Type}, {"CAS Number", type text}, {"Chemical name", type text}, {"Dose", type text}, {"Oral", Int64.Type}, {"Inhale", Int64.Type}, {"Dermal", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"No.", "CAS Number", "Chemical name", "Dose"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "Custom", each [Dose] & " " &[Attribute]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Dose", "Attribute"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Custom]), "Custom", "Value")
in #"Pivoted Column"