如何修正公式使特定Code对应下拉列表显示全部匹配包装选项?
解决Excel动态下拉列表只显示单个选项的问题
问题原因
你当前用的=INDEX(List!$C:$C,MATCH(A12,List!$D:$D,0))公式,因为MATCH函数默认仅返回第一个匹配项的行号,所以INDEX只能提取对应Code的第一个包装选项,没法获取所有匹配值。
解决方案分两种场景:
场景1:使用Excel 365/2021(支持动态数组)
- 在DataEntry工作表的空白单元格(比如E1)输入以下公式,它会自动返回所有匹配A12中Code的包装选项:
=FILTER(List!$C:$C, List!$D:$D=A12) - 设置数据验证:
- 选中需要添加下拉列表的单元格
- 点击「数据」→「数据验证」→ 选择「序列」
- 在「来源」框中输入刚才的公式单元格引用(比如
=E1),确认后下拉列表会自动加载所有匹配选项。
场景2:使用旧版Excel(无动态数组支持)
- 在DataEntry工作表的空白列(比如E列)的E1单元格输入以下数组公式,按
Ctrl+Shift+Enter组合键确认输入:=IFERROR(INDEX(List!$C:$C, SMALL(IF(List!$D:$D=A12, ROW(List!$D:$D)-ROW(List!$D$1)+1), ROWS($E$1:E1))), "") - 下拉填充E列单元格,直到出现空值,这些非空单元格就是所有匹配的包装选项。
- 设置数据验证:
- 选中目标单元格,打开数据验证→序列
- 「来源」框中引用E列的非空范围(比如
=E1:E2),确认后下拉列表就会显示所有选项。
内容的提问来源于stack exchange,提问作者Nur
相关产品推荐
相关产品推荐

