Excel 下拉列表将根据条件动态变化

Excel 下拉列表将根据条件动态变化

我想创建一个根据标准动态变化的下拉列表。

数据示例

在“名称”列中,同一个名称可以出现多次。“选项”值是唯一的。现在,根据 D1 中的名称,我想要在单元格 E1 中创建一个下拉列表,该列表将为用户提供名称与 D1 中的名称匹配的所有“选项”。

例如: 如果 D1="a" 则 E1 中的下拉列表必须具有选项 [1,4,7,10] 如果 D1="b" 则 E1 中的下拉列表必须具有选项 [2,5,8,11] 等等

谢谢你们。

答案1

我尽力解决了。文件我已经准备好了。

实际上,您需要一些辅助列来帮助单元格 E1 上的下拉列表。我已将 .xlsx 文件放在 Google Drive 上。以下是我创建的文件包含所有必需的辅助列。只是不要尝试使用 Google Sheets 编辑查看文件,因为可能有一些正在使用的功能 Google Sheets 无法识别。下载文件并使用 MS Excel 打开它。

该文件如下所示:
截屏

此文件不涉及 VBA。因此,您可以直接复制此处的公式并创建自己的文件。

使用方法如下:在 D2 中输入 A 列中的任何值。如果输入a,下拉列表将自动更改为显示 B 列中所有 实例的所有对应“选项” a。如果在 D2 中输入b或 ,下拉列表将动态更新c

但是,这样做也有一些缺点。E2 中的下拉列表中会有一些额外的空白选项。这是因为我已经在 J​​2 及其所有单元格中创建了该函数,因此它会自动在 A 和 B 列中添加任何新条目。另一个缺点是,当您有新名称(例如)时d,您必须在单元格 M1 中输入,并且您必须选择 L 列,将带有填充柄的列拖到 M 列,然后您将看到A 列中d所有实例的所有相应“选项”。d

它的工作方式是,它=IFERROR(INDEX($B$2:$B$200, SMALL(IF(J$1=$A$2:$A$200, ROW($A$2:$A$200)-ROW($A$2)+1), ROW(1:1))),"")在单元格 J2 中有这个公式。当你在 J2 中输入此公式并按下 CTRL+Shift+Enter 时,此 ctrl+shift+enter 组合键将创建一个数组公式。它返回一个数组。如果你只是按回车键,它只会给你一个错误或意想不到的结果。你可以直接向下拖动公式来查看整个返回值。如果你将公式向下拖动的数量超过结果数,函数IFERROR会捕获它并返回一个空字符串而不是错误,这样你的下拉列表中就不会出现错误,而是有一些空白选项。下拉列表只使用一个OFFSET看起来像这样的基本函数OFFSET($I$2,0,MATCH(D2,$J$1:$Z$1,0),10,1)。这个偏移函数也返回一个数组。它只搜索从 J1 到 Z1 的第一行单元格 D2 的值。如果 D2 有字符串c,它会在中搜索 c J1:Z1,当找到它时,它会得到它离 I2 有多远,并移动那么多列,并选择它下面的 10 个单元格。这 10 个单元格就是你在下拉列表中得到的东西。如果您有大量数据,您可能希望将数字 10 增加到更大的数字,并且可能希望将 J1:Z1 更改为 J1:ZZ1 之类的值。

如果对此文件或公式有任何疑问,您可以发表评论,我会尽力解决。

相关内容