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

跨电子表格数据提取需求:基于Sheet1列E非空值提取ID与姓名

提取Excel中指定条件的行数据到另一工作表

方法1:用FILTER函数(Excel 365/2021及以上版本)

这是最简便的动态提取方法:

  1. 打开Sheet2,在A2单元格输入以下公式:
    =FILTER(Sheet1!A:B, Sheet1!E:E<>"")
    
  2. 按回车即可自动提取所有Sheet1中E列不为空的行的ID(A列)和姓名(B列)。
  3. 若要避免无符合条件时显示错误值,可嵌套IFERROR:
    =IFERROR(FILTER(Sheet1!A:B, Sheet1!E:E<>""), "无符合条件的数据")
    

方法2:兼容旧版Excel的数组公式(Excel 2019及以下版本)

如果你的Excel不支持FILTER函数,用INDEX+SMALL+IF组合实现:

  1. 在Sheet2的A2单元格输入以下公式,按Ctrl+Shift+Enter(数组公式专属确认方式,输入后会自动生成大括号):
    =INDEX(Sheet1!A:A, SMALL(IF(Sheet1!E:E<>"", ROW(Sheet1!E:E)), ROW(A1)))
    
  2. 下拉A列公式到合适行数,再将公式中的A:A改为B:B填入Sheet2的B2单元格,同样按Ctrl+Shift+Enter后下拉,提取姓名列。
  3. 若超出符合条件的行数,公式会返回#NUM!,可添加IFERROR处理:
    =IFERROR(INDEX(Sheet1!A:A, SMALL(IF(Sheet1!E:E<>"", ROW(Sheet1!E:E)), ROW(A1))), "")
    

方法3:VBA宏批量提取(适合自动更新场景)

如果需要批量处理或自动触发提取,用VBA更高效:

  1. 按Alt+F11打开VBA编辑器,右键点击当前工作簿,选择插入→模块。
  2. 粘贴以下代码到模块中:
    Sub ExtractFilteredData()
        Dim sourceSheet As Worksheet, targetSheet As Worksheet
        Dim lastSourceRow As Long, currentTargetRow As Long
        Dim i As Long
        
        ' 指定源表和目标表
        Set sourceSheet = ThisWorkbook.Worksheets("Sheet1")
        Set targetSheet = ThisWorkbook.Worksheets("Sheet2")
        
        ' 清空目标表原有数据(保留第1行表头)
        targetSheet.Range("A2:B" & targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row).ClearContents
        
        ' 获取源表E列最后一行行号
        lastSourceRow = sourceSheet.Cells(sourceSheet.Rows.Count, "E").End(xlUp).Row
        currentTargetRow = 2 ' 目标表从第2行开始填充数据
        
        ' 遍历源表数据行(假设源表第1行是表头)
        For i = 2 To lastSourceRow
            If sourceSheet.Cells(i, "E").Value <> "" Then
                ' 复制ID和姓名到目标表
                targetSheet.Cells(currentTargetRow, "A").Value = sourceSheet.Cells(i, "A").Value
                targetSheet.Cells(currentTargetRow, "B").Value = sourceSheet.Cells(i, "B").Value
                currentTargetRow = currentTargetRow + 1
            End If
        Next i
        
        MsgBox "数据提取完成!", vbExclamation
    End Sub
    
  3. 按F5运行代码,或者回到Excel界面添加表单按钮绑定该宏,点击即可执行提取。

内容的提问来源于stack exchange,提问作者Raman Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:51:57