MS Excel 中对依赖下拉值的特定需求

MS Excel 中对依赖下拉值的特定需求

我有一列具有称为域的值,另一列具有称为角色的值。

一个域可以有多个角色,例如

Domain Role
A       XYZ
A       ABC
B       DEF
C       DHG
A       LKJ
B       OIO
C       CND

ETC。

我在同一张表或不同的表中有一列,该列的“域”列中包含唯一值,在下一列中,我必须根据“域”列中的选择显示一个下拉列表。例如,如果有人在一行中的域下拉列表中选择了 B,则同一行的角色列应在下拉列表中仅显示特定于上述角色中的 B 值的值,即 DEF 和 OIO

答案1

假设可以对主表进行排序并将两个表放在同一张工作表中,那么最简单的解决方案只需要一个相对较短的数据验证公式。

我已将示例工作表设置如下:

工作表截图

输入此公式作为单元格内下拉列表数据验证的来源E2

=INDEX($B:$B,MATCH(D2,$A:$A,0)):INDEX($B:$B,MATCH(D2,$A:$A,0)+COUNTIF($A:$A,D2)-1)

此公式的优点在于它能够适应主表的变化,包括在顶部插入一个新行并在最后一行之后附加一行。

缺点是:

  • 主表必须位于同一张工作表中
  • 主表必须已排序
  • 工作表上的其他表不能安全地与域列相交,除非保证它们不包含与主表的域值匹配的值

存在更复杂的解决方案来克服所有这些限制。


好的。只是为了让 Rajesh S快乐的,(并证明他错了;-) 嗯,不,你需要一个数组公式来生成唯一列表,或者生成依赖/过滤列表,如果源列表已排序),以下是更新后的工作表,其中包括创建唯一域列表以及D使用它的列中的下拉验证公式:

更新的工作表截图

正常,非数组输入输入C2并填写的公式为:

=T(INDEX($A:$A,IFERROR(MATCH(C1,$A:$A,0),ROW())+COUNTIF($A:$A,C1)))

数据验证公式为D2

=INDEX($C:$C,MATCH("Unique",$C:$C,0)+1):INDEX($C:$C,MATCH("Unique",$C:$C,0)+ROWS(C:C)-COUNTIF(C:C,"")-1)

答案2

您需要创建依赖下拉菜单。

在此处输入图片描述

按着这些次序:

  • 在 B304 中写入 haeder、LISTA 并将值放在下面的行中,如屏幕截图所示。
  • 选择 B305:B307 并按升序对范围进行排序。然后将此范围命名为“ListA”。

注意: 对于 ListB 和 ListC 也请遵循上面写的步骤。

  • 选择 B304:D304 并将此范围命名为 ROLE。

  • 选择 E304 然后转到“数据”选项卡,然后单击“数据验证”。

  • 在“设置”选项卡下,选择“允许”并选择“列表”,并在“源”中写入=Role

  • 将单元格指针放在单元格 G304 中并再次进行数据验证。

  • 在源文本框中写入=INDIRECT($E$304)。

笔记, 然后,当您从第一个下拉菜单中选择域名后,Excel 将在相邻的下拉菜单中过滤相关角色,正如您在屏幕截图中看到的那样。

注意:

  • 根据您的需要调整单元格地址。

  • 如果您觉得可以用 A、B 和 C 替换 LISTA、LISTB 和 LISTC。

相关内容