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
相关产品推荐
相关产品推荐

