Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 条件/级联/依赖下拉列表_List_Validation_Excel_Excel Formula_Vba - Fatal编程技术网

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

List 条件/级联/依赖下拉列表,list,validation,excel,excel-formula,vba,List,Validation,Excel,Excel Formula,Vba,我基本上是想做这家伙想做的事: 我已经完成了这些步骤,由于我的数据集有大约400个不同的下拉选项,我希望有一种比命名范围更简单的方法。我有一个大约400个不同帐户名的列表。这些账户名称中的每一个都与一个家庭相关,并通过家庭ID号进行识别。一个家庭可以有1-5个账户名。我希望我的下拉菜单能够识别一个家庭身份证号码,然后提供与之相关的账户名称下拉列表 例如: 其中,住户Id号是标识符 我也来过这里,我正试图找到一种方法来节省一些手工工作。我是一个完全的新手,所以提前感谢您提供的任何帮助 让我们假

我基本上是想做这家伙想做的事:

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

例如:

其中,住户Id号是标识符


我也来过这里,我正试图找到一种方法来节省一些手工工作。我是一个完全的新手,所以提前感谢您提供的任何帮助

让我们假设您有三张工作表。第一个工作表,
Sheet1
,是用户将要查看的工作表,它有下拉列表。我们可以说,包含第一个下拉选项的单元格位于B1中(包含大约400个不同选项的单元格),包含从属下拉选项的单元格位于B2中:

在你的第二张纸上,我们称之为
主列表
,是所有的数据选项和相应的数据。第1行是标题行;第2行及以下为实际数据:

=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”(下拉列表)。它首先需要有一个所有唯一数据选项的列表。我把它放在A列中。您可以通过您喜欢的任何方式(高级过滤器、透视表、公式、VBA等)从主列表中获取唯一的数据选项。唯一数据选项列表是
Sheet1
单元格B1下拉列表的基础。然后在
下拉列表
的B2单元格中,尽可能向下复制,以确保它将获取与所选数据选项相关的所有数据,使用此公式(调整工作表名称和范围以适合您的实际数据):

这使您的
DropDownLists
工作表如下所示:

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

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

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

实践一下……它将得到您需要的结果

您的数据必须进行排序才能正常工作

已排序数据

节目的数据验证

剧集的数据验证

此公式将显示在“数据验证”框中

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

输入数组公式以查找持续时间 必须使用Ctrl&Shift&Enter确认

=索引($C$4:$C$18,匹配(1,(E4=$A$4:$A$18)*(F4=$B$4:$B$18),0))

非常感谢您抽出时间来解决这个问题。我遇到的问题是,我的ID号连接到多个数据点。例如,一个家庭可能有2个或3个不同的账户,每个账户当前都标有家庭ID号。使用您为DropDownLists表提供的第一个公式,我只能获得与家庭ID号关联的第一个帐户名。提前感谢您提供的任何其他指导。@Jmrunnels我必须查看一些示例数据。您能否编辑原始问题以包含数据的外观?在原始问题中进行的编辑。再次感谢您的帮助。@Jmrunnels我已经编辑了答案,以说明您提供的示例数据。请注意,它基本上是相同的,我只是切换了公式查看的列以生成过滤帐户列表。如果您需要知道如何从列表中获取所有唯一项(在本例中是获取所有唯一ID),请查看AdvancedFilter。