如何在Excel中按Empid分组获取每组第一个非空/非null的Name值
Excel按Empid分组取分组内第一个非空Name的实现方法
以下方法默认原始数据表头在第1行,A列为Empid,B列为Name,数据范围为A2:B8,你可根据自身实际数据调整公式内的区域参数。
方法1:Excel 365/2021及以上版本(动态数组公式,操作最简单)
- 提取不重复Empid:在空白单元格(比如D2)输入公式
=UNIQUE(A2:A8),按下回车后会自动溢出所有不重复的Empid值 - 匹配第一个非空Name:在E2(D2右侧单元格)输入公式
=XLOOKUP(1,(A$2:A$8=D2)*(B$2:B$8<>""),B$2:B$8,""),按下回车后自动溢出所有分组对应的Name结果
方法2:Excel 2019及以下旧版本
- 提取不重复Empid:
- 选中A列,点击「数据」选项卡→「高级筛选」
- 勾选「将筛选结果复制到其他位置」,列表区域选择
A1:A8,条件区域留空,复制到选择D1,勾选「选择不重复的记录」,点击确定即可得到所有去重后的Empid
- 匹配第一个非空Name:
- 在E2单元格输入数组公式
=INDEX(B:B,MIN(IF((A$2:A$8=D2)*(B$2:B$8<>""),ROW($2:$8),99999)))&"" - 按下
Ctrl+Shift+Enter三键组合结束数组公式输入,下拉公式到所有Empid行即可
- 在E2单元格输入数组公式
方法3:Power Query法(适合大数据量批量处理,数据更新后可一键刷新结果)
- 选中原始数据区域,点击「数据」选项卡→「从表格/区域」,将数据导入Power Query编辑器
- 选中
Name列,右键选择「替换值」,将空值替换为null - 选中
Empid列,点击「分组依据」,分组方式选Empid,新列名自定义为temp,操作选择「所有行」,点击确定 - 点击「添加列」→「自定义列」,输入自定义列公式:
=Table.First(Table.SelectRows([temp], each [Name] <> null))?[Name] ?? "",点击确定 - 删除多余的
temp列,调整列顺序后点击「关闭并上载」,即可得到最终结果
内容的提问来源于stack exchange,提问作者harnithu
相关产品推荐
相关产品推荐

