Excel中的分层动态下拉列表

时间:2017-04-09 19:17:08

标签: excel excel-vba excel-formula vba

在我的公司,我有一个这样的数据库,我想创建一个分层的动态更新下拉列表。

+-----------+----------+--------+
| Institute | Industry | Course |
+-----------+----------+--------+
| a         | aa       | aaa    |
| a         | aa       | bbb    |
| b         | bb       | mmm    |
| b         | cc       | ddd    |
| b         | bb       | ttt    |
| c         | ee       | fff    |
| d         | ee       | ggg    |
+-----------+----------+--------+


我希望最终结果是这样的。用户将从顶部开始。根据顶部条目,底部列表将相应更改。以下是快照。

My User Entry List Demo Structure


我的方法

我的计划是创建一个数组公式,根据前两个条目索引课程列表。然后使用offset来获取课程条目。但我的问题是,虽然我能够索引课程列表,但我无法对它们进行排序以用于数据验证。数据验证不会忽略我不想要的非填充或错误值。假设我解决了第一个层次结构问题,我就是研究所和行业的输出。我试过这个

  

G8 - 来自下拉的研究所输入
  G9 - 来自下拉的行业输入
  H11:H15 - 各自的课程

H11中的公式:H15是{=INDEX(C2:C8,1/(1/((A2:A8=G8)*(B2:B8=H8)*(ROW(C2:C8)-1))))}
这是output我得到的。

我很想发布问题。如果我能说得更清楚,请告诉我。 此外,我在上网时发现了这些非常有用的链接。 请原谅我添加代码,因为SO不允许新成员超过2个链接

1: http://www.contextures.com/xlDataVal02.html
2: https://www.ablebits.com/office-addins-blog/2014/09/30/dependent-cascading-dropdown-lists-excel/

1 个答案:

答案 0 :(得分:0)

我认为你想要的是将这个公式作为数组放入H11:H18:

=IFERROR(INDEX(C2:C8,AGGREGATE(15,6,(ROW(C2:C8)-1)/((A2:A8=G8)*(B2:B8=G9)),ROW()-ROW(H10)),1),"")

然后,您可以将课程选项的数据验证设置为H11:H18。

enter image description here