You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel中如何匹配并合并查找结果?

Excel中如何匹配并合并查找结果?

嘿,这个需求完全可以实现!我来一步步给你讲清楚怎么做,分不同Excel版本来说,你可以根据自己的情况选~

一、Excel 365/2021 版本(推荐用函数实现)

你的核心需求是:根据Sheet2的ItemA值(包括单个值、换行分隔的多值),在Sheet1中找到所有对应ItemB,并用换行合并结果,用TEXTJOIN+TEXTSPLIT(365新增函数)就能轻松搞定。

1. 处理单个ItemA值的情况

比如Sheet2的A2是plane,直接用以下公式就能提取Sheet1中所有plane对应的ItemB并换行合并:

=TEXTJOIN(CHAR(10), TRUE, IF(Sheet1!$A$2:$A$7=A2, Sheet1!$B$2:$B$7, ""))
  • CHAR(10):代表换行符,用来分隔多个匹配结果
  • TEXTJOIN:把符合条件的ItemB值合并成一个文本,第二个参数TRUE表示忽略空值
  • IF函数:遍历Sheet1的A列,找到和当前单元格匹配的行,返回对应的B列值,不匹配则返回空

2. 处理单元格内包含换行多值的情况

比如Sheet2的A6是plane+换行+car,需要先拆分单元格内的多个值,再分别查找合并,最后再把结果合并:

=TEXTJOIN(CHAR(10), TRUE, BYROW(TEXTSPLIT(A6, CHAR(10)), LAMBDA(x, TEXTJOIN(CHAR(10), TRUE, IF(Sheet1!$A$2:$A$7=x, Sheet1!$B$2:$B$7, "")))))
  • TEXTSPLIT(A6, CHAR(10)):把A6的内容按换行拆分成独立值(比如["plane", "car"]
  • BYROW+LAMBDA:遍历拆分后的每个值,对每个值执行单个值的查找合并逻辑
  • 最后外层的TEXTJOIN:把每个值对应的合并结果再用换行连起来

关键设置:开启自动换行

输入公式后,选中Sheet2的B列,右键→设置单元格格式→切换到「对齐」选项卡→勾选「自动换行」,这样换行符才能正常显示出来。

二、老版本Excel(无TEXTJOIN/TEXTSPLIT)的解决方案

如果你的Excel版本比较旧(比如2019及更早),可以用VBA自定义函数来实现:

  1. Alt+F11打开VBA编辑器
  2. 右键左侧的工作簿名称→插入模块
  3. 粘贴以下代码:
Function JoinMatches(lookupValue As String, lookupRange As Range, returnRange As Range, delimiter As String) As String
    Dim cell As Range
    Dim result As String
    Dim values() As String
    ' 拆分单元格内的多值
    values = Split(lookupValue, delimiter)
    
    ' 遍历每个拆分后的值,查找匹配结果
    For Each val In values
        For Each cell In lookupRange
            If cell.Value = val Then
                If result <> "" Then
                    result = result & delimiter & returnRange.Cells(cell.Row - lookupRange.Row + 1).Value
                Else
                    result = returnRange.Cells(cell.Row - lookupRange.Row + 1).Value
                End If
            End If
        Next cell
    Next val
    
    JoinMatches = result
End Function
  1. 回到Excel,在Sheet2的B列输入公式:
=JoinMatches(A2, Sheet1!$A$2:$A$7, Sheet1!$B$2:$B$7, CHAR(10))

同样记得开启单元格的自动换行,就能得到你想要的结果啦。

按照上面的方法,你就能得到示例里的最终效果:

  • bus对应的B列是banana+换行+strawberry
  • 两个car对应的B列都是pear
  • plane+换行+car对应的B列是apple+换行+pear

备注:内容来源于stack exchange,提问作者Chrisengie

火山引擎 最新活动