You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:26