如何在Google Sheets中将无userName的姓名列表提取至其他工作表
提取userName列为空的姓名并导入Sheet13操作方法
零代码快速操作(适合一次性提取场景)
- 打开存放源数据的工作表,选中包含姓名、userName字段的全部数据范围
- 点击顶部「数据」选项卡,点「筛选」按钮给每列表头加上筛选下拉控件
- 点击userName列表头的下拉箭头,取消全选后仅勾选「空白」选项,确认后页面将仅展示userName为空的行
- 选中筛选后展示的所有姓名单元格,按快捷键
Alt+;定位可见单元格(避免复制到隐藏的非目标行),再按Ctrl+C复制 - 切换到Sheet13,选中姓名列表要放置的起始单元格,按
Ctrl+V粘贴即可完成导入
小提示:如果操作时发现粘贴出了不符合条件的内容,基本都是没定位可见单元格导致把隐藏行带过去了,重新按
Alt+;定位后再复制即可
函数自动同步(适合源数据会动态更新的场景)
如果后续源数据会新增、修改,想要Sheet13自动同步符合条件的姓名,不需要重复手动操作,可以用函数实现:
- 切换到Sheet13,在姓名列表的起始单元格(例如A1)输入以下公式:
=FILTER(源数据!A:A,源数据!B:B="","无匹配结果")
- 将公式中
源数据!A:A替换为实际存储姓名的列,源数据!B:B替换为实际存储userName的列,按回车后会自动批量填充所有符合条件的姓名,后续源数据变动时结果会自动更新。如果使用的Excel版本不支持FILTER函数,可以用INDEX+SMALL+IF组合数组公式实现同等效果。
VBA一键执行(适合需要频繁重复提取的场景)
如果需要定期做这个提取操作,可以用宏代码一键完成,不用每次手动筛选:
- 按快捷键
Alt+F11打开VBA编辑器,在左侧工程栏右键点击当前工作簿名称,选择「插入」-「模块」 - 在弹出的代码编辑区粘贴以下代码:
Sub 提取空用户名姓名到Sheet13() Dim sourceSht As Worksheet, targetSht As Worksheet Dim lastRow As Long, i As Long, tRow As Long ' 可自行修改引号内的源工作表名称 Set sourceSht = ThisWorkbook.Worksheets("源数据") Set targetSht = ThisWorkbook.Worksheets("Sheet13") ' 清空Sheet13原有旧数据 targetSht.Cells.Clear tRow = 1 ' 示例中userName在B列、姓名在A列,可根据实际列号修改 lastRow = sourceSht.Cells(sourceSht.Rows.Count, "B").End(xlUp).Row For i = 2 To lastRow If Trim(sourceSht.Cells(i, "B").Value) = "" Then sourceSht.Cells(i, "A").Copy targetSht.Cells(tRow, "A") tRow = tRow + 1 End If Next i End Sub
- 根据自己表格的实际情况修改代码里标注的源表名、列号,按F5运行即可自动完成提取导入,后续需要更新时直接运行这个宏就行。
内容的提问来源于stack exchange,提问作者CressyDonut
相关产品推荐
相关产品推荐

