如何根据Excel第一列对应值填充第二列空值
嘿,这个需求我经常碰到,给你几个靠谱的解决办法,看你习惯用哪种:
方法1:用XLOOKUP函数(推荐Excel 365/2021及以后版本)
这个函数比老版的VLOOKUP更直观,写法也简洁:
- 假设你的数据从第2行开始(第1行是表头),直接在B2单元格输入公式:
=XLOOKUP(A2,$A:$A,$B:$B,"",0) - 输入完按回车,然后把鼠标放在B2单元格右下角,当光标变成十字形时下拉填充所有行就行。
原理:XLOOKUP会在整个A列里找当前行A2的值,返回对应的B列内容。因为你的示例里同一个ColumnA只有一个非空的ColumnB值,所以不管当前行B列是空还是有值,都会匹配到那个正确的非空值。
方法2:用VLOOKUP函数(兼容旧版Excel)
如果你的Excel版本比较老,不支持XLOOKUP,就用这个:
- 在B2单元格输入公式:
=VLOOKUP(A2,$A:$B,2,FALSE) - 同样下拉填充所有行。
注意:要是担心循环引用(公式在B列,却引用了整个B列),可以把范围改成具体的单元格区域,比如你的数据到第100行,就写成$A$2:$B$100,这样更稳妥。
方法3:用Power Query批量处理(适合大数据量)
如果你的数据行数很多,用公式下拉有点麻烦,或者以后还要更新数据,Power Query是更好的选择:
- 选中你的数据区域,点击顶部菜单栏的「数据」→「从表格/区域」(如果弹出提示问是否有表头,选「是」),进入Power Query编辑器。
- 选中ColumnA列,点击「转换」→「分组依据」:
- 分组列选「ColumnA」
- 新列名随便取,比如「匹配值」
- 操作选「最大值」(因为非空值比空值优先级高,最大值就是我们要的那个非空值)
- 列选「ColumnB」
点击确定,你会得到一个分组后的表,每个ColumnA对应唯一的非空ColumnB值。
- 回到原表(如果刚才分组后跳转到了新表,点击左侧的原表标签),点击「主页」→「合并查询」→「合并作为新查询」:
- 第一个表选当前的原表,第二个表选刚才分组后的表
- 匹配列都选「ColumnA」
- 连接类型选「左外部」,点击确定。
- 点击合并后的列右侧的展开按钮,只勾选「匹配值」,然后删除原来的ColumnB列,把新的「匹配值」列重命名为「ColumnB」。
- 点击「主页」→「关闭并加载」,处理好的数据就会回到Excel里啦。以后数据更新了,只要右键点击表格选「刷新」就行。
重要提醒:不管用哪种方法,都要确保同一个ColumnA对应的ColumnB值是唯一的哦!如果有多个不同的值,得先确认哪个是正确的再处理。
内容的提问来源于stack exchange,提问作者shockwave




