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

Power BI中如何提取值为'X'的单元格对应列名?

Power BI 逐行提取指定范围内值为'X'的对应列名实现方案

你可以根据自身使用场景选择以下两种方案,均可稳定实现需求:

方案1:Power Query 实现(数据清洗阶段使用,数据刷新后自动同步结果)

操作步骤:

  • 将数据源导入Power Query编辑器,先选中需要保留的非判断列(比如A列的主键/名称类字段),再选中B到J列的判断范围
  • 点击顶部菜单栏「添加列」>「自定义列」,在公式输入框填入以下M代码:
= Text.Combine(List.Select(Record.FieldNames(_), (k) => Record.Field(_,k) = "X"), "、")
  • 如果你选中的列超出B-J范围,把公式里的Record.FieldNames(_)替换为固定列名列表即可,格式为{"列B的真实名称","列C的真实名称","列D的真实名称","列E的真实名称","列F的真实名称","列G的真实名称","列H的真实名称","列I的真实名称","列J的真实名称"}
  • 确认后新列会自动生成每行所有值为X的列名拼接结果,修改自定义列的列名后即可上载到数据模型

方案2:DAX 计算列实现(模型层快速出结果,无需修改Power Query逻辑)

直接在Power BI Desktop的数据视图选中对应表,新建计算列,输入以下DAX代码:

匹配X列名 =
CONCATENATEX(
    FILTER(
        {
            ("列B的真实名称", [列B的真实名称]),
            ("列C的真实名称", [列C的真实名称]),
            ("列D的真实名称", [列D的真实名称]),
            ("列E的真实名称", [列E的真实名称]),
            ("列F的真实名称", [列F的真实名称]),
            ("列G的真实名称", [列G的真实名称]),
            ("列H的真实名称", [列H的真实名称]),
            ("列I的真实名称", [列I的真实名称]),
            ("列J的真实名称", [列J的真实名称])
        },
        [Value2] = "X"
    ),
    [Value1],
    "、"
)
  • 把代码里所有列名占位符替换成你表中B到J列的实际名称即可,拼接用的分隔符「、」也可以根据需求换成逗号、分号等其他符号

补充说明:如果某行B-J列范围内没有值为X的单元格,两种方案默认返回空值;如果需要标记这类无匹配的行,可以在公式外层加空值判断,返回自定义提示文本即可。

内容的提问来源于stack exchange,提问作者Azhar Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:45:37