该场景下能否使用VLOOKUP?Excel多条件空白值填充方案咨询
Excel多条件填充空白值解决方案
针对你需要将每个Name下A、B类别的空白Value填充为同Name下C类别的Value,D类别保留原值的需求,提供以下几种可行方法:
方法1:INDEX+MATCH组合(兼容多数Excel版本)
假设原数据位于A2:C13区域(A列Name,B列Category,C列Value),在第一个空白的Value单元格(如C2)输入以下公式:
=IF(ISBLANK(C2), INDEX($C$2:$C$13, MATCH(A2&"C", $A$2:$A$13&$B$2:$B$13, 0)), C2)
注意:旧版Excel(2019及以前)需要按
Ctrl+Shift+Enter确认数组公式,新版Excel直接回车即可。
- 原理:通过
A2&"C"拼接当前Name和目标类别"C",再用MATCH在Name+Category的拼接数组中找到对应位置,最后用INDEX提取该位置的Value。
方法2:XLOOKUP函数(Excel 365/2021及以上)
如果使用新版Excel,XLOOKUP支持直接多条件匹配,写法更简洁:
=IF(ISBLANK(C2), XLOOKUP(A2&"C", $A$2:$A$13&$B$2:$B$13, $C$2:$C$13), C2)
直接回车即可生效,无需数组公式确认。
方法3:Power Query批量处理(适合大量数据)
若数据量较大,用Power Query批量处理更高效:
- 选中数据区域,点击「数据」选项卡→「从表格/区域」,导入Power Query编辑器
- 点击「转换」选项卡→「分组依据」,按
Name列分组,操作选择「所有行」 - 添加自定义列,输入以下公式:
let currentName = [Name], cValue = List.Select([Data], each [Category] = "C"){0}[Value] in Table.AddColumn([Data], "FilledValue", each if [Category] = "D" then [Value] else cValue) - 展开分组后的「数据」列和「FilledValue」列,删除原
Value列,将FilledValue重命名为Value - 点击「关闭并上载」,将处理后的数据导出到Excel表格
内容的提问来源于stack exchange,提问作者Vuotelin
相关产品推荐
相关产品推荐

