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

使用DAX度量值筛选数据透视表并拼接指定列内容

Excel DAX度量值实现带筛选的字符串拼接

需求

在Excel中仅使用DAX创建度量值,基于Col1的唯一值拼接Col2的内容,且该度量值能配合数据透视表的筛选(如Col3的筛选)生效,无需依赖PowerPivot。

尝试的错误DAX代码

=VAR Var1 = SELECTCOLUMNS(DISTINCT(Range[Col1]), "UHD", Range[Col2])
  
Return

CONCATENATEX(SUMMARIZE(FILTER(Range, Range[Col2] IN Var1),Range[Col1]),Range[Col1],", ")

源数据

Col1Col2Col3Col4
55a By 9YesName 1
55b By 9NoName 1
55c By 9YesName 2
66a By 9YesName 2
66b By 9YesName 2
77a By 9NoName 3
77b By 9YesName 3
88a By 9NoName 3

期望数据透视表输出(Col3筛选为"Yes"时)

Col4Measure Output
Name 1"5a by 9"
Name 2"5c by 9, 6b by 9"
Name 3"7b by 9"

正确DAX度量值

带筛选的拼接度量值 = 
VAR 筛选后数据 = FILTER(ALLSELECTED(Range), Range[Col3] = "Yes")
VAR 唯一Col1列表 = DISTINCT(SELECTCOLUMNS(筛选后数据, "Col1", Range[Col1]))
RETURN
CONCATENATEX(
    ADDCOLUMNS(唯一Col1列表, 
        "对应Col2", CALCULATE(MAX(Range[Col2]), 筛选后数据, Range[Col1] = [Col1])
    ),
    [对应Col2],
    ", "
)

逻辑说明

  1. ALLSELECTED(Range)保留数据透视表当前的筛选上下文(包括Col4的行分组和Col3的筛选),再筛选出Col3="Yes"的行;
  2. 提取筛选后数据中Col1的唯一值,确保每个Col1只参与一次拼接;
  3. 对每个唯一Col1,用CALCULATE(MAX(Range[Col2]))获取对应符合条件的Col2值(若一个Col1对应多个符合条件的Col2,MAX会取最后一个,可根据需求替换为MIN或其他聚合函数);
  4. 最后用CONCATENATEX完成字符串拼接。

内容的提问来源于stack exchange,提问作者Ben Ford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:11:10