如何无需VBA用Excel函数将条目-列表映射扁平化为两列对应表?
不用VBA实现Excel条目-列表映射扁平化
方法1:Excel 365/2021 动态数组版
如果你的Excel支持动态数组功能,直接用以下两步生成结果:
- 提取所有非空列表项(比如放在D列):
=FILTER(B:B,B:B<>"") - 匹配对应条目(放在C列):
=XLOOKUP(ROW(FILTER(B:B,B:B<>"")),IF(A:A<>"",ROW(A:A)),A:A,,1)
公式说明:
FILTER(B:B,B:B<>"")筛选出B列所有非空内容,直接生成完整的列表项列。XLOOKUP会定位每个列表项的行号,向上查找最近的非空A列单元格,返回对应的条目值。
方法2:全Excel版本通用版
如果用的是旧版Excel,按以下步骤操作:
- 在C1单元格输入公式,下拉填充至数据末尾:
=IF(B1<>"",LOOKUP(2,1/(A$1:A1<>""),A$1:A1),"") - 在D1单元格输入公式,下拉填充至数据末尾:
=IF(B1<>"",B1,"") - 选中C、D列,筛选掉空行,即可得到扁平化的两列结果。
公式说明:
LOOKUP(2,1/(A$1:A1<>""),A$1:A1)利用LOOKUP的特性,找到当前行上方最后一个非空的A列单元格,也就是对应条目。- 两个IF公式只保留B列非空行的内容,后续筛选空行即可得到干净的结果。
内容的提问来源于stack exchange,提问作者Aleph0
相关产品推荐
相关产品推荐

