如何自动从Sheet1首行非空行提取前5行数据至Sheet2的A1:C5区域?
提取Sheet1动态起始行的前5行数据至Sheet2
方法一:Excel动态数组公式(适用于Excel 365/2021及以上版本)
- 在Sheet2的A1单元格输入以下公式,回车后会自动填充至A1:C5区域:
=TAKE(FILTER(Sheet1!A:C,Sheet1!A:A<>""),5) - 说明:
FILTER(Sheet1!A:C,Sheet1!A:A<>""):自动筛选Sheet1中A列非空的所有行,精准定位数据起始行TAKE(...,5):提取筛选结果的前5行- Sheet1数据更新时,Sheet2内容会自动同步
方法二:VBA代码(兼容全版本Excel)
若你的Excel不支持动态数组,可通过VBA实现自动更新:
- 按
Alt + F11打开VBA编辑器 - 在左侧项目栏找到Sheet1,双击打开其代码窗口
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) Dim startRow As Long Dim lastRow As Long ' 定位Sheet1中A列最后一个非空行,反向查找确定数据起始行 startRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row Do While startRow > 1 And Sheet1.Cells(startRow, "A") = "" startRow = startRow - 1 Loop ' 提取前5行到Sheet2,处理源数据不足5行的情况 If startRow > 0 Then lastRow = Application.Min(startRow + 4, Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row) Sheet1.Range("A" & startRow & ":C" & lastRow).Copy Destination:=Sheet2.Range("A1") Sheet2.Range("A6:C" & Sheet2.Rows.Count).ClearContents End If End Sub
- 说明:Sheet1数据修改时会自动触发代码,重新定位起始行并同步前5行数据到Sheet2
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

