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

开发Excel VBA工具:匹配HE/ME侧交易行并迁移至Sheet3

Excel VBA 交易匹配工具实现方案

基于你的需求,以下VBA代码可实现HE侧(Sheet1)与ME侧(Sheet2)交易的规则匹配,并将符合条件的A:Q列数据按要求迁移至Sheet3。匹配逻辑严格遵循指定规则:

  • Sheet1的I、J、M列分别与Sheet2的I、J、M列完全匹配
  • Sheet1的L列与Sheet2的O列对应匹配
Sub MatchAndMigrateTransactions()
    Dim wsHE As Worksheet, wsME As Worksheet, wsResult As Worksheet
    Dim lastRowHE As Long, lastRowME As Long, resultRow As Long
    Dim i As Long, j As Long
    
    ' 绑定工作表对象
    Set wsHE = ThisWorkbook.Sheets("Sheet1")
    Set wsME = ThisWorkbook.Sheets("Sheet2")
    
    ' 检查Sheet3是否存在,不存在则新建
    On Error Resume Next
    Set wsResult = ThisWorkbook.Sheets("Sheet3")
    On Error GoTo 0
    If wsResult Is Nothing Then
        Set wsResult = ThisWorkbook.Sheets.Add(After:=wsME)
        wsResult.Name = "Sheet3"
    End If
    
    ' 获取各表数据最后行号
    lastRowHE = wsHE.Cells(wsHE.Rows.Count, "A").End(xlUp).Row
    lastRowME = wsME.Cells(wsME.Rows.Count, "A").End(xlUp).Row
    resultRow = 2 ' 结果从第2行开始(第1行保留表头)
    
    ' 复制表头到结果表
    wsHE.Range("A1:Q1").Copy wsResult.Range("A1")
    
    ' 遍历HE侧所有数据行
    For i = 2 To lastRowHE
        ' 遍历ME侧数据寻找匹配项
        For j = 2 To lastRowME
            ' 执行匹配规则判断
            If wsHE.Cells(i, "I").Value = wsME.Cells(j, "I").Value And _
               wsHE.Cells(i, "J").Value = wsME.Cells(j, "J").Value And _
               wsHE.Cells(i, "M").Value = wsME.Cells(j, "M").Value And _
               wsHE.Cells(i, "L").Value = wsME.Cells(j, "O").Value Then
                
                ' 迁移HE侧当前行A:Q列到结果表
                wsHE.Range("A" & i & ":Q" & i).Copy wsResult.Range("A" & resultRow)
                resultRow = resultRow + 1
                
                ' 迁移ME侧匹配行A:Q列到结果表(HE行下方)
                wsME.Range("A" & j & ":Q" & j).Copy wsResult.Range("A" & resultRow)
                resultRow = resultRow + 1
                
                ' 标记已匹配的ME行(避免重复匹配,可选)
                wsME.Cells(j, "AV").Value = "已匹配"
            End If
        Next j
    Next i
    
    ' 自动调整结果表列宽
    wsResult.Columns("A:Q").AutoFit
    
    MsgBox "交易匹配与迁移完成!", vbInformation
End Sub

使用说明

  1. 确保HE侧数据在Sheet1、ME侧数据在Sheet2
  2. 打开VBA编辑器(快捷键Alt + F11)
  3. 插入新模块:右键点击工作簿 → 插入 → 模块
  4. 粘贴上述代码到模块中
  5. 运行宏(快捷键F5,或在「开发工具」选项卡中执行宏)

代码细节说明

  • 自动创建Sheet3(若不存在)
  • 保留表头结构,匹配结果从第2行开始写入
  • 匹配成功后严格按「HE行→ME行」的顺序写入结果表
  • 通过AV列标记已匹配的ME行,避免同一行被重复匹配(可根据需求删除该逻辑)
  • 完成后自动调整结果表列宽,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:21:11