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

如何自动从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实现自动更新:

  1. 按Alt + F11打开VBA编辑器
  2. 在左侧项目栏找到Sheet1,双击打开其代码窗口
  3. 粘贴以下代码:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:45:37