Excel工作簿多工作表数据复制至Results表末行问题求助
Excel 复制数据到Results表的解决方法
以下是针对需求的VBA实现方案,同时拆解常见的末行获取失败原因:
完整VBA代码
Sub CopyDataToResults() Dim wb As Workbook Dim wsSHRP As Worksheet, wsSPControl As Worksheet, wsResults As Worksheet Dim lastRowResults As Long ' 绑定目标工作簿与工作表 Set wb = ThisWorkbook Set wsSHRP = wb.Sheets("SHRP") Set wsSPControl = wb.Sheets("SharePoint Control") Set wsResults = wb.Sheets("Results") ' 第一步:复制SHRP表数据到Results表起始位置 wsSHRP.UsedRange.Copy wsResults.Range("A1") ' 第二步:获取Results表的真实最后一行(以A列为基准,规避空行干扰) lastRowResults = wsResults.Cells(wsResults.Rows.Count, "A").End(xlUp).Row ' 第三步:复制SharePoint Control表数据到Results的下一行 wsSPControl.UsedRange.Copy wsResults.Range("A" & lastRowResults + 1) ' 清除剪贴板缓存 Application.CutCopyMode = False End Sub
关键细节说明
- 正确获取末行:用
Cells(Rows.Count, "A").End(xlUp).Row替代End(xlDown),后者会在遇到中间空行时提前终止,无法定位真正的最后一行。如果数据核心列不是A列,将"A"替换为对应列标识即可。 - 处理特殊格式干扰:如果Results表存在隐藏行、合并单元格,需先取消隐藏、拆分合并单元格再执行代码,否则
End(xlUp)会被误导。 - 可选重置Results表:若需要每次运行都清空Results表,在复制SHRP数据前添加:
wsResults.Cells.Clear
常见失败原因排查
- 之前的方法可能未指定工作表就调用
UsedRange,导致引用错误; - 误用
End(xlDown),遇到中间空行就停止; - 工作表名称拼写错误(Excel工作表名称区分大小写);
- Results表处于保护状态,需先取消保护才能写入数据。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

