我有一列具有称为域的值,另一列具有称为角色的值。
一个域可以有多个角色,例如
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。