条件/级联/依赖下拉列表

时间:2015-12-31 18:57:42

标签: excel list validation excel-vba excel-formula vba

我基本上试图这样做,这家伙正在努力做到: Excel drop-down list using vLookup

我已经完成了这些步骤,因为我的数据集有大约400种不同的下拉选项,我希望有一种比命名范围更简单的方法。我有一个大约400个不同帐户名的列表。这些帐户名中的每一个都与家庭相关联,并由家庭ID号标识。一个家庭可以拥有1-5个帐户名称。我希望我的下拉菜单能够识别家庭ID号,然后在下拉菜单中提供与之关联的帐户名称。

示例:

Data

家庭身份证号码是标识符。

我也已经离开这里http://sites.madrocketscientist.com/jerrybeaucaires-excelassistant/data-validation/dynamic-indirect并试图找到一种方法来节省一些手工作业。我是一个全新的人,所以提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:2)

让我们假装你有三张工作表。第一张工作表Sheet1是您的用户将要查看的工作表,它包含下拉列表。我们说包含第一个下拉选项的单元格在B1(具有大约400个不同选项的单元格)中,包含依赖下拉列表的单元格在B2中:

Sheet1 example

在您的第二张表格中,我们称之为MasterList,是所有数据选项和相应的数据。第1行是标题行;第2行和第2行是实际数据:

MasterList example

在你的第三张纸上,我们称之为DropDownLists,就是魔术发生的地方。它首先需要有一个所有唯一数据选项的列表。我已将其放在A栏中。您可以通过您喜欢的任何方式从主列表中获取唯一数据选项(高级过滤器,数据透视表,公式,VBA等)。该唯一数据选项列表是Sheet1单元格B1的下拉列表的基础。然后在DropDownLists的单元格B2中,根据需要向下复制以保证它将获取与所选数据选项关联的所有数据,使用此公式(调整工作表名称和范围以适合您的实际数据):

=IF(OR(Sheet1!$B$1="",ROW(B1)>COUNTIF(MasterList!$A$2:$A$10000,Sheet1!$B$1)),"",INDEX(MasterList!$B$2:$B$10000,MATCH(1,INDEX((MasterList!$A$2:$A$10000=Sheet1!$B$1)*(COUNTIF(B$1:B1,MasterList!$B$2:$B$10000)=0),),0)))

这使您的DropDownLists工作表看起来像这样:

DropDownLists example

最后,我们需要将该列表(基于所选数据选项的数据)设置为动态命名范围。我将其命名为listFilteredData并使用以下公式定义:

=DropDownLists!$B$2:INDEX(DropDownLists!$B:$B,MAX(2,ROWS(DropDownLists!$B:$B)-COUNTBLANK(DropDownLists!$B:$B)))

然后,对于Sheet1单元格B2,使用数据验证并使用=listFilteredData定义列表,您将获得结果,如我的示例所示。

答案 1 :(得分:1)

练习这个.....它会得到你需要的东西。

您的数据必须按此分类才能生效。

排序数据

Sorted Data

节目的数据验证

enter image description here

enter image description here

剧集的数据验证

数据验证框中的此公式

=OFFSET($A$1,MATCH($E$4,$A:$A,0)-1,1,COUNTIF($A:$A,$E$4),1)

enter image description here

enter image description here

输入数组公式以查找持续时间 必须使用 Ctrl&转移&输入

=INDEX($C$4:$C$18,MATCH(1,(E4=$A$4:$A$18)*(F4=$B$4:$B$18),0)) enter image description here