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

请求修复:将两表格数据合并到同列(无新增行)的VBA代码

问题修复方案

问题原因

原代码通过按列循环的方式分别粘贴2022和2023的数据,导致每一列都是"2022数据+2023数据"的堆叠结构,而非按整行形式将2023数据追加到2022数据之后,不符合预期需求。

修复后的代码

Sub CopyPasteData()
    Dim Sh2022 As Worksheet, Sh2023 As Worksheet, ShQuery As Worksheet
    Dim LastRow As Long
    Dim TargetCols As Variant
    Dim SourceRange2022 As Range, SourceRange2023 As Range
    Dim i As Integer
    
    ' 清空Query2除第一行外的数据
    With ActiveSheet.ListObjects("Query2").DataBodyRange
       If .Rows.Count > 1 Then .Offset(1).Resize(.Rows.Count - 1).Delete
    End With
    
    ' 绑定工作表对象
    Set Sh2022 = ThisWorkbook.Sheets("Year2022")
    Set Sh2023 = ThisWorkbook.Sheets("Year2023")
    Set ShQuery = ThisWorkbook.Sheets("Data Table")

    ' 指定需要复制的列名
    TargetCols = Array("Customer Name", "Activity Type", "timeInterval.duration", "Description", "Platform", "Start Date")
    
    ' 构建2022表的目标列数据范围(整行结构)
    Set SourceRange2022 = Sh2022.ListObjects("Table2").ListColumns(TargetCols(0)).DataBodyRange
    For i = 1 To UBound(TargetCols)
        Set SourceRange2022 = Union(SourceRange2022, Sh2022.ListObjects("Table2").ListColumns(TargetCols(i)).DataBodyRange)
    Next i
    
    ' 构建2023表的目标列数据范围(整行结构)
    Set SourceRange2023 = Sh2023.ListObjects("Table3").ListColumns(TargetCols(0)).DataBodyRange
    For i = 1 To UBound(TargetCols)
        Set SourceRange2023 = Union(SourceRange2023, Sh2023.ListObjects("Table3").ListColumns(TargetCols(i)).DataBodyRange)
    Next i
    
    ' 复制2022数据到目标表起始位置
    LastRow = ShQuery.Cells(ShQuery.Rows.Count, 1).End(xlUp).Row + 1
    SourceRange2022.Copy
    ShQuery.Cells(LastRow, 1).PasteSpecial xlPasteValues
    
    ' 复制2023数据追加到目标表最后一行之后
    LastRow = ShQuery.Cells(ShQuery.Rows.Count, 1).End(xlUp).Row + 1
    SourceRange2023.Copy
    ShQuery.Cells(LastRow, 1).PasteSpecial xlPasteValues

    Application.CutCopyMode = False
End Sub

关键修改点

  • 取消按列循环的粘贴逻辑,改为先构建包含所有指定列的整行数据范围
  • 先将2022的整表指定列数据复制到目标表,再将2023的整表指定列数据追加到目标表最后一行,保证数据按行连续排列
  • 使用Union方法合并多列数据范围,确保复制的是完整的行结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:33:28