You need to enable JavaScript to run this app. Excel VBA循环跨工作表复制合并数据问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA循环跨工作表复制合并数据问题咨询

VBA实现方案

核心逻辑说明

直接用行号变量做双层循环遍历,不需要依赖选中范围或者复杂的Range偏移操作,稳定性更高,适配你150*50的笛卡尔积合并需求:

  • 外层循环遍历WS1的所有待合并行(共150行,起始行36)
  • 内层循环遍历WS2的所有待合并行(共50行,起始行1)
  • 每一轮内层循环完成后自动进入WS1下一行的遍历,自动计算WS3的写入行号,不需要手动维护偏移量

完整代码示例

Sub MergeWorksheetsData()
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
    Dim ws1_start_row As Long, ws2_start_row As Long, ws3_current_row As Long
    Dim i As Long, j As Long, match_col As Long
    Dim match_value As Variant
    
    ' 定义工作表对象,可根据实际表名修改
    Set ws1 = ThisWorkbook.Worksheets("WS1")
    Set ws2 = ThisWorkbook.Worksheets("WS2")
    ' 新建结果工作表WS3
    Set ws3 = ThisWorkbook.Worksheets.Add
    ws3.Name = "合并结果"
    
    ' 配置起始行参数
    ws1_start_row = 36
    ws2_start_row = 1
    ws3_current_row = 1
    
    ' 外层循环:遍历WS1共150行
    For i = ws1_start_row To ws1_start_row + 149
        ' 内层循环:遍历WS2共50行
        For j = ws2_start_row To ws2_start_row + 49
            ' 复制WS1当前行A到D列到WS3
            ws3.Range("A" & ws3_current_row & ":D" & ws3_current_row).Value = ws1.Range("A" & i & ":D" & i).Value
            ' 复制WS2当前行A到H列到WS3
            ws3.Range("E" & ws3_current_row & ":L" & ws3_current_row).Value = ws2.Range("A" & j & ":H" & j).Value
            
            ' 匹配WS1第34行对应列提取数值
            match_value = ws3.Range("L" & ws3_current_row).Value
            On Error Resume Next ' 防止匹配不到时报错,可根据需要调整错误处理逻辑
            match_col = WorksheetFunction.Match(match_value, ws1.Rows(34), 0)
            On Error GoTo 0
            
            If match_col > 0 Then
                ' 此处默认将匹配到的数值写入WS3的M列,可根据需要调整目标列
                ws3.Range("M" & ws3_current_row).Value = ws1.Cells(i, match_col).Value
            End If
            
            ' WS3写入行号+1
            ws3_current_row = ws3_current_row + 1
            ' 重置匹配列标记
            match_col = 0
        Next j
    Next i
    
    ' 可选:自动调整列宽
    ws3.UsedRange.EntireColumn.AutoFit
    MsgBox "合并完成,共生成" & ws3_current_row - 1 & "行数据"
End Sub

注意事项

  • 代码中工作表名称、匹配后数值的写入列可根据你的实际需求修改对应参数
  • 如果WS1第34行的匹配值存在重复,默认会匹配第一个符合条件的列,如有重复值特殊匹配需求可自行调整匹配逻辑
  • 直接操作单元格值赋值的方式比复制粘贴执行效率更高,7500行数据可秒级完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:45:03