PowerBI/Excel中将单列列表转为规范表格,求DAX/M代码
单列数据转规整表格的实现方案(M/DAX代码)
M代码(Power Query 适用)
假设你的源数据存储在名为表1的Excel表中,目标是将单列数据拆分为每行包含3个元素的规整表格(可自行调整每行元素数量),直接替换Power Query的代码即可:
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], // 替换"表1"为你的实际数据源表名 添加索引 = Table.AddIndexColumn(源, "索引", 0, 1, Int64.Type), 分组 = Table.Group(添加索引, "分组", {"数据", each Table.Column(_, "Data")}, (x) => Number.IntegerDivide(x[索引], 3)), // 修改3为每行需要的元素数 补全空值 = Table.TransformColumns(分组, {"数据", each _ & List.Repeat({null}, 3 - List.Count(_))}), // 与上方元素数保持一致 扩展列表 = Table.ExpandListColumn(补全空值, "数据"), 添加列索引 = Table.AddIndexColumn(扩展列表, "列索引", 0, 1, Int64.Type), 计算列位置 = Table.TransformColumns(添加列索引, {"列索引", each Number.Mod(_, 3)}), // 与每行元素数保持一致 透视生成表格 = Table.Pivot(计算列位置, List.Distinct(计算列位置[列索引]), "列索引", "数据") in 透视生成表格
使用说明:
- 将代码中的
"表1"替换为你的数据源表名称 - 所有标注
3的位置统一修改为你需要的每行元素数量(比如5、6等)
DAX代码(Power Pivot 适用)
如果需要在Power Pivot中通过计算表实现,假设源表名为源数据,数据列名为Data,目标生成每行3个元素的表格,代码如下:
规整表 = VAR 每行元素数 = 3 // 修改为你需要的每行元素数量 VAR 带索引数据 = ADDCOLUMNS( 源数据, "行分组", CEILING((ROW() - MINX(源数据, ROW())) / 每行元素数 + 1, 1), "列位置", MOD((ROW() - MINX(源数据, ROW())), 每行元素数) + 1 ) RETURN SUMMARIZE( 带索引数据, [行分组], "列1", MAXX(FILTER(带索引数据, [行分组] = EARLIER([行分组]) && [列位置] = 1), [Data]), "列2", MAXX(FILTER(带索引数据, [行分组] = EARLIER([行分组]) && [列位置] = 2), [Data]), "列3", MAXX(FILTER(带索引数据, [行分组] = EARLIER([行分组]) && [列位置] = 3), [Data]) )
使用说明:
- 若需要更多列,比如每行5个元素,需在
RETURN的SUMMARIZE中新增"列4", MAXX(...), "列5", MAXX(...),对应调整列位置的判断值 - 修改
每行元素数为目标数量即可适配不同的列数需求
内容的提问来源于stack exchange,提问作者Miraiinik
相关产品推荐
相关产品推荐

