Table of contents
本教程展示了如何通过使用新的动态数组函数来创建一个取决于另一个单元格的Excel下拉列表。
在Excel中创建一个简单的下拉列表很容易,而制作一个多层次的层叠式下拉列表一直是一个挑战。 上面的链接教程描述了四种不同的方法,每一种方法都包括数量惊人的步骤,一堆不同的公式,以及与多字条目、空白单元格等有关的少量限制。
这是个坏消息。 好消息是,这些方法是为前动态版本的Excel设计的。 在Excel 365中引入的动态数组改变了一切!有了新的动态数组函数,创建多个从属下拉列表是几分钟甚至几秒钟的事。 没有技巧,没有注意事项,没有废话。 只有快速、直接和容易掌握的解决方案。
注意事项。
- 这种新的动态数组制作下拉列表的方式只在Excel 365和Excel 2021中有效。 在前动态Excel中,你将不得不按照《在Excel 2019 - 2007中创建依赖性下拉列表》中描述的长期老式方法来做。
- 这个解决方案是针对单行的。 如果你想把你的选取列表复制下来 多行 ,然后按照依赖性下拉列表中的说明进行多行操作。
- 选择一个你希望出现下拉菜单的单元格(在我们的例子中是D3)。
- 关于 数据 选项卡,在 数据工具 组,点击 数据验证 .
- 在 数据验证 对话框,执行以下操作。
- 隶属 允许 , 选择 列表 .
- 在 来源 框中,输入UNIQUE公式输出的溢出范围的引用。 为此,在单元格引用后直接输入哈希标签,如:=$G$3#。
这被称为溢出范围引用,这种语法指的是整个范围,不管它膨胀或收缩多少。
- 点击 认可 以关闭该对话框。
- 要有 新条目包括 在下拉列表中 自动地 或者你可以在公式中加入一些空白单元格,如本例所示。
- 如果你的原始数据包含任何缺口,你可以 滤除空白 通过使用这种解决方案。
- 拟 按字母顺序排序 在下拉菜单的项目中,将你的公式包在SORT函数中,如本例所解释。
- 拟 包括新的数据 当它被自动添加到源列表中时,在你的公式中引用的数组中添加一些额外的单元格。
- 拟 排除空白单元格 ,配置公式以忽略空单元格,直到它们被填充。
如何在Excel中制作动态下拉列表
这个例子演示了通过使用新的动态数组函数在Excel中创建一个层叠式下拉列表的一般方法。
假设你在A列有一个水果清单,在B列有一个出口商。 目标是把独特的水果名称放在第一个下拉菜单中,根据用户的选择,在第二个下拉菜单中显示相关的出口商。
要在Excel中创建一个动态的依赖性下拉列表,请执行以下步骤。
1.为主下拉列表获取项目
首先,我们将从A列中提取所有不同的水果名称,这可以通过使用UNIQUE函数的最简单形式来实现--提供水果列表的第一个参数( 阵列 ),并省略其余的可选参数,因为它们的默认值对我们来说很好用。
=unique(a3:a15)
公式进入G3,按回车键后,结果自动溢出到下一个单元格。
2.创建主要的下拉菜单
为了使你的主要下拉列表,以这种方式配置一个Excel数据验证规则。
你的主要下拉列表已经完成了!
3.为依赖性下拉列表获取项目
为了获得二级下拉菜单的条目,我们将根据第一个下拉菜单中选择的值过滤B列中的值。 这可以在另一个名为FILTER的动态数组函数的帮助下完成。
=filter(b3:b15, a3:a15=d3)
其中B3:B15是你的从属下拉单元格的源数据,A3:A15是你的主下拉单元格的源数据,而D3是主下拉单元格。
为了确保公式工作正常,你可以在第一个下拉列表中选择一些值,观察FILTER返回的结果。 完美!:)
4.使依赖性下拉
要创建第二个下拉列表,配置数据验证标准,就像你在第2步为第一个下拉列表所做的那样。 但这一次,参考FILTER函数返回的溢出范围:=$H$3#。
就这样!你的Excel依赖性下拉列表已经可以使用了。
提示和说明。
如何在Excel中创建多个从属的下拉列表
在前面的例子中,我们做了一个依赖于另一个单元格的下拉列表。 但如果你需要一个多级的层次结构,即第三个下拉列表依赖于第二个列表,甚至第四个下拉列表依赖于第三个列表,这可能吗? 是的,你可以设置任何数量的依赖列表(当然是一个合理的数量:)。
在这个例子中,我们在C列中放置了州/省,现在希望在G3中添加一个相应的下拉菜单。
要在Excel中制作一个多个从属的下拉列表,你需要这样做。
1.设置第一个下拉菜单
主下拉列表的创建步骤与前面的例子完全相同(请看上面的步骤1和2)。 唯一不同的是你在 "下拉列表 "中输入的溢出范围参考。 来源 箱子。
这一次,UNIQUE公式在E8中,而主下拉列表将在E3中。 因此,你选择E3,点击 数据验证 ,并提供这个参考:=$E$8#。
2.配置第二个下拉菜单
你可能已经注意到了,现在B列包含了多个相同的出口商。 但你希望在你的下拉列表中只有唯一的名字,对吗? 为了排除所有重复出现的情况,将UNIQUE函数包在你的FILTER公式中,并在F8中输入这个更新的公式。
=unique(filter(b3:b15, a3:a15=e3))
其中B3:B15是第二个下拉单元的源数据,A3:A15是第一个下拉单元的源数据,E3是第一个下拉单元。
之后,在数据验证标准中使用以下溢出范围参考:=$F$8#
3.设置第三个下拉菜单
为了收集第3个下拉列表中的项目,利用具有多个标准的FILTER公式。 第一个标准根据第1个下拉列表中的选择值(A3:A15=E3)检查整个水果列表,而第二个标准根据第2个下拉列表中的选择值(B3:B15=F3)测试出口商列表。 整个公式到G8为止。
=filter(c3:c15, (a3:a15=e3) * (b3:b15=f3))
如果你要添加更多的依赖性下拉菜单(第4个、第5个等),那么很可能C列将包含同一项目的多次出现。 为了防止重复的项目进入准备表,并因此进入第3个下拉菜单,像我们在上一步做的那样,在UNIQUE函数中嵌入FILTER公式。
=unique(filter(c3:c15, (a3:a15=e3) * (b3:b15=f3))
你要做的最后一件事是用这个方法再创建一个数据验证规则 来源 参考资料: =$G$8#
你的多个依赖性下拉列表已经可以使用了。
提示:以类似的方式,你可以获得项目的 随后的下拉菜单 假设D列包含第4个下拉列表的源数据,你可以在H8中输入以下公式来检索相应的项目。
=unique(filter(d3:d15, (a3:a15=e3) * (b3:b15=f3) * (c3:c15=g3) ))
如何在Excel中制作一个可扩展的下拉列表
在创建了下拉列表后,你首先关心的可能是当你向源数据添加新项目时会发生什么。 下拉列表会自动更新吗? 如果你的原始数据被格式化为Excel表格,那么是的,前面例子中讨论的动态下拉列表会自动扩展,不需要你做任何努力,因为Excel表格的本质是可扩展的。
如果由于某种原因,使用Excel表格不是一种选择,你可以通过这种方式使你的下拉列表可扩展。
牢记这两点,让我们对数据准备表中的公式进行微调。 数据验证规则根本不需要任何调整。
主要下拉菜单的公式
由于水果名称在A3:A15中,我们在数组中增加了5个单元格,以满足可能的新条目。 此外,我们将FILTER函数嵌入UNIQUE,以提取没有空白的唯一值。
鉴于上述情况,G3中的公式是这样的。
=unique(filter(a3:a20, a3:a20""))
从属下拉菜单的公式
G3中的公式不需要太多调整--只需用多几个单元格来扩展数组。
=filter(b3:b20, a3:a20=d3)
其结果是一个完全动态的可扩展依赖性下拉列表。
如何按字母顺序排列下拉列表
想在不求助于源数据的情况下按字母顺序排列你的下拉列表吗? 新的动态Excel也有专门的功能!在你的数据准备表中,只需将SORT函数包在你现有的公式中。
数据验证规则的配置与前面例子中描述的完全一样。
要从A到Z排序
由于升序排序是默认选项,你可以直接将你现有的公式嵌套在 阵列 的参数,省略所有其他可选的参数。
对于 主下拉菜单 (G3中的公式)。
=sort(unique(filter(a3:a20, a3:a20""))
对于 从属下拉式 (H3中的公式)。
=SORT(FILTER(B3:B20, A3:A20=D3))
完成了!两个下拉列表都按字母A到Z排序。
要从Z到A排序
要按降序排序,你需要设置第三个参数( 排序_顺序 )的SORT函数为-1。
对于 主下拉菜单 (G3中的公式)。
=sort(unique(filter(a3:a20, a3:a20""), 1, -1)
对于 从属下拉式 (H3中的公式)。
=sort(filter(b3:b20, a3:a20=d3), 1, -1)
这将对准备表中的数据和下拉列表中的项目从Z到A排序。
这就是如何借助新的动态数组函数在Excel中创建动态下拉列表。 与传统方法不同的是,这种方法对单字和多字条目都能完美工作,并能处理任何空白单元格。 谢谢您的阅读,希望下周在我们的博客上见到您!
供下载的实践工作手册
取决于Excel的下拉列表(.xlsx文件)。