开发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
使用说明
- 确保HE侧数据在Sheet1、ME侧数据在Sheet2
- 打开VBA编辑器(快捷键
Alt + F11) - 插入新模块:右键点击工作簿 → 插入 → 模块
- 粘贴上述代码到模块中
- 运行宏(快捷键
F5,或在「开发工具」选项卡中执行宏)
代码细节说明
- 自动创建Sheet3(若不存在)
- 保留表头结构,匹配结果从第2行开始写入
- 匹配成功后严格按「HE行→ME行」的顺序写入结果表
- 通过AV列标记已匹配的ME行,避免同一行被重复匹配(可根据需求删除该逻辑)
- 完成后自动调整结果表列宽,提升可读性
内容的提问来源于stack exchange,提问作者Murat
相关产品推荐
相关产品推荐

