如何将含混合数据及空白单元格的工作表最后一行提取至另一工作表
提取含混合数据与空白单元格的最后一行并迁移至其他工作表
方法一:Excel公式法
适合无需自动化操作的场景,可直接在目标工作表中提取数据:
- 基础数组公式(兼容旧版Excel)
在目标工作表的A1单元格输入以下公式,按Ctrl+Shift+Enter完成数组输入(Excel 365/2021无需此操作,直接回车):
=IFERROR(INDEX(Sheet1!A:A,MAX(IF(Sheet1!A:A<>"",ROW(Sheet1!A:A),0))),"")
横向拖动填充柄至所需列,即可提取源表(Sheet1)对应列的最后一个非空值,空白单元格会返回空文本。
- 简化公式(Excel 365/2021专属)
利用动态数组函数TAKE直接提取最后一行,无需逐列填充:
=TAKE(Sheet1!A:Z, -1)
将A:Z替换为实际需要的列范围即可。
方法二:VBA宏代码法
适合需要自动执行、批量处理的场景,步骤如下:
- 按
Alt+F11打开VBA编辑器,插入新模块; - 粘贴以下代码,修改
Sheet1和Sheet2为实际的源/目标工作表名称:
Sub CopyLastRowWithMixedData() Dim sourceSheet As Worksheet Dim targetSheet As Worksheet Dim lastRow As Long Dim lastCol As Long ' 指定源工作表与目标工作表 Set sourceSheet = ThisWorkbook.Worksheets("Sheet1") Set targetSheet = ThisWorkbook.Worksheets("Sheet2") ' 定位源表最后一行(反向搜索所有列的非空单元格) lastRow = sourceSheet.Cells.Find(What:="*", _ After:=sourceSheet.Cells(1, 1), _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row ' 定位源表最后一列 lastCol = sourceSheet.Cells.Find(What:="*", _ After:=sourceSheet.Cells(1, 1), _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column ' 复制最后一行到目标表的第一个空行 sourceSheet.Range(sourceSheet.Cells(lastRow, 1), sourceSheet.Cells(lastRow, lastCol)).Copy _ targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Offset(1, 0) Application.CutCopyMode = False End Sub
- 按
F5执行宏,即可完成最后一行数据的迁移。
注意事项
- 公式法中,若源表数据更新,公式会自动刷新(Excel默认开启自动计算);
- VBA法需确保工作簿启用宏,执行前请备份数据避免意外。
内容的提问来源于stack exchange,提问作者Shdaad Support
相关产品推荐
相关产品推荐

