如何将Sheet1中的指定数据导入至Sheet2?

Sheet1指定数据提取至Sheet2的实现方案
一、公式法(适合简单提取规则)
1. 精确匹配提取
如果要按唯一标识(比如姓名、编号)提取对应数据,用VLOOKUP或INDEX+MATCH更灵活:
- 比如Sheet1的A列是姓名,B列是目标数据,在Sheet2的A1输入要查询的姓名,B1输入:
=VLOOKUP(A1,Sheet1!A:B,2,FALSE) - 要是需要提取非连续列的数据,用
INDEX+MATCH更稳妥,比如提取Sheet1中A列匹配Sheet2 A1的C列数据:=INDEX(Sheet1!C:C,MATCH(Sheet2!A1,Sheet1!A:A,0))
2. 条件筛选提取
- 新版Excel(365/2021+)直接用
FILTER函数一键提取符合条件的所有行,比如提取Sheet1中B列数值大于100的全部数据,在Sheet2的A1输入:=FILTER(Sheet1!A:D,Sheet1!B:B>100) - 旧版Excel用数组公式,输入后按
Ctrl+Shift+Enter确认,下拉填充直到出现#NUM!停止:=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!B:B>100,ROW(Sheet1!B:B)),ROW(A1)))
二、VBA宏(适合批量/复杂规则提取)
按Alt+F11打开VBA编辑器,插入模块后粘贴代码,根据自己的需求修改条件:
Sub ExtractDataToSheet2() Dim ws1 As Worksheet, ws2 As Worksheet Dim lastRow1 As Long, lastRow2 As Long Dim i As Long Set ws1 = ThisWorkbook.Sheets("Sheet1") Set ws2 = ThisWorkbook.Sheets("Sheet2") lastRow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row lastRow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1 '示例:提取Sheet1中A列非空且B列数值大于50的行,可自行修改条件 For i = 2 To lastRow1 '假设第1行是表头 If ws1.Cells(i, "A").Value <> "" And ws1.Cells(i, "B").Value > 50 Then ws1.Rows(i).Copy ws2.Rows(lastRow2) lastRow2 = lastRow2 + 1 End If Next i MsgBox "提取完成!" End Sub
修改代码里的判断条件和列号,运行宏就能批量提取数据。
三、Power Query(适合大数据量/重复更新提取)
- 选中Sheet1的数据区域,点击「数据」选项卡→「从表格/区域」,勾选「我的表格有标题」进入编辑器。
- 在编辑器里用筛选器选择要保留的行/列,或者添加条件列筛选目标数据。
- 点击「关闭并上载至」,选择Sheet2的起始单元格,确认加载。后续Sheet1数据更新后,右键Sheet2的数据区域→「刷新」就能同步最新提取结果。
内容的提问来源于stack exchange,提问作者hzeb
相关产品推荐
相关产品推荐

