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

行数不同的两列表格如何匹配组合?Excel非复制粘贴实现方案

Excel匹配生成D/E列的实现方法

输入图片描述

需求:提取B列数据,为A列每行匹配对应内容,生成D列(匹配到的B列值)和E列(对应C列的数据),排除手动复制粘贴的方式。

一、公式实现

1. 适配Excel 365/2021(动态数组)

在D2单元格输入以下公式,下拉填充即可自动匹配所有结果:

=IFERROR(INDEX($B$2:$B$10,SMALL(IF(ISNUMBER(SEARCH($B$2:$B$10,$A2)),ROW($B$2:$B$10)-ROW($B$2)+1),ROWS(D$2:D2))),"")

E列对应C列数据,只需把公式中的$B$2:$B$10替换为$C$2:$C$10:

=IFERROR(INDEX($C$2:$C$10,SMALL(IF(ISNUMBER(SEARCH($B$2:$B$10,$A2)),ROW($B$2:$B$10)-ROW($B$2)+1),ROWS(E$2:E2))),"")

2. 兼容旧版Excel(数组公式)

在D2单元格输入公式后,按Ctrl+Shift+Enter确认(数组公式),再下拉填充:

=IFERROR(INDEX($B$2:$B$10,SMALL(IF(ISNUMBER(SEARCH($B$2:$B$10,$A$2:$A$4)),ROW($B$2:$B$10)-1),ROW(A1))),"")

E列对应公式:

=IFERROR(INDEX($C$2:$C$10,SMALL(IF(ISNUMBER(SEARCH($B$2:$B$10,$A$2:$A$4)),ROW($C$2:$C$10)-1),ROW(A1))),"")

二、VBA脚本实现

按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码,运行宏即可自动生成数据:

Sub MatchAndGenerate()
    Dim ws As Worksheet
    Dim lastRowA As Long, lastRowB As Long, i As Long, j As Long, k As Long
    Dim arrA() As String, keyword As String
    
    Set ws = ActiveSheet
    lastRowA = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    k = 2 ' 起始写入行
    
    For i = 2 To lastRowA
        arrA = Split(ws.Cells(i, "A").Value, ",")
        For Each keyword In arrA
            keyword = Trim(keyword)
            For j = 2 To lastRowB
                If ws.Cells(j, "B").Value = keyword Then
                    ws.Cells(k, "D") = keyword
                    ws.Cells(k, "E") = ws.Cells(j, "C")
                    k = k + 1
                    Exit For
                End If
            Next j
        Next keyword
    Next i
    MsgBox "生成完成"
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:23