dynamic下拉列表 – 返回值

我有一个电子表格有3列。 这些是名字,年龄,价值

我想根据“名称”列中的唯一值创build一个incell下拉列表。 例如,在“名称”列中可能有两个单元格,其中“John”在其中。 即重复

当在下拉列表中select“John”时,我想创build另一个dynamic创build的下拉菜单,仅显示条目的年龄。 例如,如果名称列中有两行“John”,则其他下拉列表应仅显示这些行的年龄值。 基于两个selectid喜欢显示值列中的任何东西。

你认为我需要使用macros来实现吗?

使事情复杂化,列表中的行数可能会随时间而改变,因此需要删除空白名称。 创buildincell下拉菜单时的“忽略空白”什么也不做,它们仍然显示在列表中。

任何意见,将不胜感激。

基于你的描述,我认为你正在创build列表validation的下拉单元格。 列表可以是初始数据库的子集。 这样一个数据库的例子可能是这样的:

初始清单

与validation的下拉菜单相邻,如:

随着下降

这可以通过几个步骤来实现。

1)在辅助列中创build所有唯一名称的一个子集,我将在J.

=IFERROR(IF(NOT(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($J$1:J1,$A$2:$A$20),0,0),0))=""),INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($J$1:J1,$A$2:$A$20),0,0),0)),NA()),"") 

我testing唯一的范围只扩展到A20,但你可以把这个尽可能远的地方。

2)由于您正在使用用户必须select的validation列表进行此操作,因此您应该可以按字母顺序排列这些列表。 我在K的下一列做这个

 =IFERROR(INDEX(INDIRECT("J1:J"&SUMPRODUCT(--(LEN(J:J)>0))+1),MATCH(ROWS($J$2:J2),COUNTIF(INDIRECT("J1:J"&SUMPRODUCT(--(LEN(J:J)>0))+1),"<="&INDIRECT("J1:J"&SUMPRODUCT(--(LEN(J:J)>0))+1)),0)),"") 

这个公式是一个数组公式,必须用ctrl + shift + enterinput第一个单元格,然后你可以填写。 在附近的单元格中,让我们跟踪用于使我们的按字母顺序排列的列表(无空格)的有意义名称占据的完整范围。 input以下内容:

 ="K2:K"&SUMPRODUCT(--(LEN(J:J)>0))+1 

请注意,这是假设我的唯一身份是在列J.如果你把他们在别处你将需要修改这一点。

3)在这一点上,我们可以使我们的第一个validation的下拉菜单。 我正在使用Excel 2016,所以我select我想要下拉的单元格(在我的情况下是E2),然后进入数据 – >validation。 在这个我select允许:列表; 和来源:我input以下内容:

 =INDIRECT($K$1) 

由于K1是我跟踪有用的和按字母顺序的唯一身份的范围的单元格。 例: 验证

现在回到主表,我有一个下拉列表中的E2。 接下来让我们构build有用年龄的子集。

4)在一个新的帮手范围内(对于我的M2:M10),input以下内容:

 =IFERROR(SUM(LARGE(IF(($A$2:$A$20=$E$2)*ROW($A$2:$A$20),$B$2:$B$20,""),COUNTIF($A$2:$A$20,"="&$E$2)-ROW()+ROW($M$2))),"") 

这是另一个数组公式,必须使用ctrl + shift + enter来提交,但相比之下,其他数组公式必须一次input整个范围,我只是select了一小部分单元格,因为我知道我不会有超过几个年纪。 如果你怀疑你会有更多的这个范围。

跟名字让我们跟踪附近单元格中有用年龄的范围(我selectN1)一样。

 ="M2:M"&COUNTIF((M:M),">0")+1 

5)使下一个validation的下拉菜单。 select一个单元格(我selectF2),再次数据 – >validation,select一个列表,现在使用年龄来源:

 =INDIRECT($N$1) 

6)获得与那个年龄段的个人相对应的价值现在很容易。 在接下来的单元格中input:

 =SUM(IF((A2:A20=E2)*(B2:B20=F2),C2:C20)) 

你有它。 下面是我完成的工作表的一个例子:

完全功能

最后要提的一件事。 当你这样做,并切换到一个新的名称,它不会自动重置年龄下拉。 所以为了使这个显示重置,你可以使用一些聪明的条件格式。 我使用以下规则格式化F2和G2,并将字体颜色设置为白色:

条件格式

因此,当更高优先级的下拉列表被更改时,这些单元格中的每个单元格中的值都不会重置,但它似乎变为空白状态,迫使用户从该下拉列表中select新的时间。

祝你好运!