如何在Excel基于Name Manager的动态下拉列表中添加固定值*
解决动态下拉列表添加固定值"*"的问题
针对Excel 365/2021(支持动态数组)
直接用VSTACK函数将固定值"*"与原动态区域合并,在名称管理器中输入以下公式即可:
=VSTACK("*", INDIRECT("'Source'!"&VLOOKUP('Reporting'!$K$11,'Source'!$BN$11:$BO$50,2,0)))
- 原理:
VSTACK自动将"*"放在第一行,后续拼接INDIRECT返回的动态区域,生成包含固定值的新动态数组,无需手动添加数组大括号{}。
针对旧版Excel(无动态数组支持)
需要用INDEX+COUNTA构建虚拟数组,步骤如下:
- 先定义辅助名称(比如
OriginalList),公式与原公式一致:
=INDIRECT("'Source'!"&VLOOKUP('Reporting'!$K$11,'Source'!$BN$11:$BO$50,2,0))
- 再定义最终用于下拉列表的名称(比如
CombinedList),公式为:
=IF(ROW(INDIRECT("1:"&COUNTA(OriginalList)+1))=1,"*",INDEX(OriginalList,ROW(INDIRECT("1:"&COUNTA(OriginalList)+1))-1))
- 原理:
COUNTA(OriginalList)计算原区域非空单元格数量,ROW(INDIRECT("1:"&...+1))生成从1到「原行数+1」的序列;行号为1时返回"*",其余行号对应原区域的第「行号-1」个值,实现合并效果。
原数组公式无效的原因
旧版Excel名称管理器不支持直接用;将单元格区域与常量数组合并,且Excel 365之前的版本不自动支持动态数组溢出,因此手动添加数组大括号{}无法生效。
内容的提问来源于stack exchange,提问作者Jeanjean
相关产品推荐
相关产品推荐

