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

如何按双条件拼接Excel多行数据?求公式或VBA代码

解决方案:按条件拼接对应单元格内容

原始数据表格

ABCD
13920APPLETRUE13920-13921-13924-13925
13921APPLETRUE13920-13921-13924-13925
13922ORANGE
13923LEMON
13924APPLETRUE13920-13921-13924-13925
13925APPLETRUE13920-13921-13924-13925
13927BANANATRUE13927-13928
13928BANANATRUE13927-13928

需求说明

当C列单元格值为TRUE时,查找B列中与当前行B列值相同的所有行,将对应A列的值用连字符-拼接至D列;若C列不为TRUE,则D列留空,要求公式可复制到D列其他行,或提供VBA实现方案。


方法一:Excel公式实现(支持下拉复制)

适用于Excel 365/2021及以上版本(支持动态数组),旧版本需按Ctrl+Shift+Enter作为数组公式输入:

在D2单元格输入以下公式,然后下拉填充至所有行:

=IF(C2=TRUE, TEXTJOIN("-", TRUE, IF($B$2:$B$9=B2, $A$2:$A$9, "")), "")

公式说明

  • IF(C2=TRUE, ..., ""):判断当前行C列是否为TRUE,是则执行拼接,否则返回空
  • TEXTJOIN("-", TRUE, ...):用连字符拼接符合条件的内容,第二个参数TRUE表示忽略空值
  • IF($B$2:$B$9=B2, $A$2:$A$9, ""):筛选出B列与当前行B列值相同的行,返回对应A列内容,否则返回空

方法二:VBA自定义函数实现

如果需要兼容所有Excel版本,可创建自定义函数CONCATIFS,实现类似SUMIFS的条件拼接逻辑:

  1. 按下Alt+F11打开VBA编辑器
  2. 插入新模块(右键左侧工程窗口→插入→模块)
  3. 粘贴以下代码:
Function CONCATIFS(rngCriteria As Range, criteria As Variant, rngConcat As Range, Optional delimiter As String = "-") As String
    Dim cell As Range
    Dim result As String
    result = ""
    
    ' 遍历条件区域,匹配则拼接对应内容
    For Each cell In rngCriteria
        If cell.Value = criteria Then
            If result <> "" Then result = result & delimiter
            result = result & rngConcat.Cells(cell.Row - rngCriteria.Row + 1).Value
        End If
    Next cell
    
    CONCATIFS = result
End Function
  1. 返回Excel界面,在D2单元格输入以下公式,下拉填充:
=IF(C2=TRUE, CONCATIFS($B$2:$B$9, B2, $A$2:$A$9), "")

自定义函数说明

  • CONCATIFS(条件区域, 匹配值, 待拼接区域, [分隔符]):参数依次为条件所在区域、要匹配的条件值、需要拼接的内容区域,可选分隔符默认是-
  • 函数会遍历条件区域,将所有匹配条件的对应内容用分隔符拼接后返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:50:06