我有以下 csv 文件
文件 Genre_all.xlsx
A B
Action|Adventure|Horror 4.8
Action|Music 7.2
Horror|Adventure 5.6
现在,我需要一个如下文件
File Genre_avg.xlsx
A B
Action 6
Adventure 5.2
Horror 5.2
Music 7.2
B 列是与类型对应的分数的平均值。
例如,对于动作:(4.8+7.2)/2 = 6
我应该使用什么命令来获得以下输出?
答案1
如果第一个表格为sheet1
,第二个表格为sheet2
,则单元格 B2sheet2
可以是
=AVERAGEIF(sheet1!A:A;"*" & A2 & "*";sheet1!B:B)
等等。
答案2
这可以使用 PowerQuery 来完成。
拆分第一列,然后对前 3 个结果列进行逆透视。然后您需要按值分组
Value Average
Action 6
Adventure 5.2
Horror 5.2
Music 7.2
您通常使用 PowerQuery 进行点击,但生成的 M 代码是:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type number}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type","Column1",Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv),{"Column1.1", "Column1.2", "Column1.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}, {"Column1.3", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Column2"}, "Attribute", "Value"),
#"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Value", "Column2"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"Value"}, {{"Average", each List.Average([Column2]), type number}})
in
#"Grouped Rows"
如果您有 Excel 2010 或 2013,PowerQuery 是一个免费插件。Excel 2016 已内置该插件。