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

如何筛选出B至AA列属性完全一致的付款条款代码(Terms of Payment Codes)

找出属性完全相同的付款条款代码

方法1:辅助列+COUNTIFS(兼容全Excel版本)

如果你的Excel版本不支持动态数组,这个方法最稳妥:

  1. 添加辅助列:在AB2单元格输入公式,将B到AA列的所有属性拼接成一个唯一字符串:

    =CONCAT(B2:AA2)
    

    旧版Excel没有CONCAT函数的话,直接逐个列拼接:

    =B2&C2&D2&...&AA2
    

    注意:如果属性列包含数值和文本混合的情况,用TEXT函数统一格式,避免格式差异导致拼接结果错误:

    =TEXT(B2,"@")&TEXT(C2,"@")&...&TEXT(AA2,"@")
    

    下拉填充到所有数据行。

  2. 标记重复属性组:在AC2单元格输入公式,判断当前行的属性组是否存在重复:

    =COUNTIFS($AB$2:$AB$1000,AB2)>1
    

    返回TRUE表示该付款条款代码有其他代码和它属性完全一致。

  3. 提取同属性的所有代码:如果需要列出所有匹配的代码,用TEXTJOIN(Excel 2019及以上):

    =TEXTJOIN(", ",TRUE,IF($AB$2:$AB$1000=AB2,$A$2:$A$1000,""))
    

    旧版Excel按Ctrl+Shift+Enter作为数组公式输入,或者用LOOKUP返回第一个匹配项:

    =LOOKUP(2,1/($AB$2:$AB$1000=AB2),$A$2:$A$1000)
    

方法2:动态数组公式(Excel 365/2021)

利用Excel 365的动态数组功能,无需手动添加辅助列:

2.1 用GROUPBY一键分组(最新版本支持)

直接在空白单元格输入公式,自动按B到AA列的属性分组,聚合对应的付款条款代码:

=GROUPBY(B2:AA2,A2:A1000,TEXTJOIN,", ",0,TRUE)

参数说明:

  • B2:AA2:分组的依据(所有属性列)
  • A2:A1000:需要聚合的付款条款代码列
  • TEXTJOIN:将同组代码用逗号连接的聚合函数
  • ", ":代码之间的分隔符
  • 0:忽略空值
  • TRUE:保留属性组的原始值

2.2 用LET封装逻辑(兼容多数365版本)

如果你的Excel还没更新GROUPBY,用LET函数封装步骤,生成每个代码对应的同属性代码列表:

=LET(
    data_range,A2:AA1000,
    codes_col,INDEX(data_range,,1),
    attrs_cols,INDEX(data_range,,2):INDEX(data_range,,27),
    attr_strings,BYROW(attrs_cols,LAMBDA(row,CONCAT(TEXT(row,"@")))),
    result,BYROW(codes_col,LAMBDA(code,TEXTJOIN(", ",TRUE,FILTER(codes_col,attr_strings=XLOOKUP(code,codes_col,attr_strings),"")))),
    result
)

这个公式会自动遍历每一行,返回当前代码所有属性完全相同的其他代码。

关键注意点

  • 处理混合格式:数值和文本类型的属性,一定要用TEXT统一格式后再拼接,避免出现"123"和123被判定为不同属性的情况。
  • 空白值处理:如果属性列的空白是有效属性,直接保留;如果是缺失值,用IFNA(row,"")替换后再拼接,确保空白值的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:00:33