求助:Excel中基于ID列、List1和List2条件生成List3的方案
Excel 动态生成List3的解决方案
基础兼容方案(适用于所有Excel版本)
在List3的起始单元格(比如G2)输入以下公式,然后下拉填充到目标行:
=IF(C2="","",IF(F2<>"",F2,E2))
逻辑说明:
- 先判断当前行C列(ID)是否为空,为空则List3对应行留空
- ID非空时,优先取F列(List2)内容;若F列无值,则取E列(List1)内容
动态数组方案(自动扩展,Excel 365/2021及以上)
如果你的Excel支持动态数组功能,直接在G2单元格输入以下公式,List3会自动扩展到C列所有有ID的行,且随C列内容增减自动更新:
标准写法(可读性更强)
=BYROW(C:C,LAMBDA(id, IF(id="","", LET( list2, INDEX(F:F,ROW(id)), list1, INDEX(E:E,ROW(id)), IF(list2<>"",list2,list1) ) ) ))
简洁写法
=IF(C:C="","",IF(F:F<>"",F:F,E:E))
逻辑说明:
- 利用
BYROW函数逐行遍历C列的ID值 - 对每一行执行与基础方案相同的判断逻辑,自动生成溢出数组,覆盖所有有效ID行
- 当C列新增或删除ID行时,List3会自动调整范围,无需手动下拉填充
注意事项:
- 公式中的“有值”指单元格非空(文本、数字均视为有值,公式返回的空文本
""会被判定为空) - 简洁版动态公式会自动忽略C列底部的空行,仅生成对应有效ID的List3内容
内容的提问来源于stack exchange,提问作者frickinFrodo
相关产品推荐
相关产品推荐

