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

Excel宏复制粘贴位置调整求助:如何改为旧数据右侧而非下方?

Excel宏修改:将数据横向追加到旧数据右侧

修改后的完整代码

Sub Backup_button1()

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastCol As Long

    ' 设置复制和目标工作表变量
    Set wsCopy = Workbooks("Form Input SAP.xlsm").Worksheets("7-9")
    Set wsDest = Workbooks("File Backup.xlsx").Worksheets("7-9")
    
    ' 1. 找到复制区域的最后一行(基于H列数据)
    lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "H").End(xlUp).Row
    
    ' 2. 找到目标表第4行的最后一列,偏移1列作为粘贴起始列
    lDestLastCol = wsDest.Cells(4, wsDest.Columns.Count).End(xlToLeft).Column
    ' 若第4行无数据,默认从B列开始粘贴
    If lDestLastCol = 1 Then lDestLastCol = 2
    
    ' 3. 复制粘贴数据(仅粘贴值)
    wsCopy.Range("H4:N" & lCopyLastRow).Copy
    wsDest.Cells(4, lDestLastCol).PasteSpecial Paste:=xlPasteValues
    
    ' 清除剪贴板,避免弹窗干扰
    Application.CutCopyMode = False
    
End Sub

核心修改说明

  • 定位逻辑切换:把原代码中查找目标表最后一行的逻辑,改为查找目标表第4行(对应复制数据的起始行)的最后一列,实现从纵向追加改为横向追加。
  • 粘贴位置调整:粘贴起始点从B列+新行改为第4行+最后一列的下一列,确保新数据紧贴旧数据的右侧。
  • 边界情况处理:增加了目标表第4行无数据时的默认处理,保持和原代码一致的起始粘贴列(B列)。
  • 优化体验:添加Application.CutCopyMode = False清除剪贴板,避免后续操作出现粘贴提示弹窗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:25:28