Excel 在数据验证中按公式引用命名范围
大家好,大家好 我有一系列的命名范围,Excel 在数据验证中按公式引用命名范围,excel,validation,dynamic,range,formula,Excel,Validation,Dynamic,Range,Formula,大家好,大家好 我有一系列的命名范围,a_颜色,B_颜色,等等。 这些表示颜色列表中已排序列的部分,按生产这些颜色的制造商的代码排序。这些是动态命名范围,由COUNTA构建,用于表示mfr代码中有多少种颜色。根据我的计算,列表应该是连续的,因为列是按代码排序的 我知道我可以通过简单地将=A_colors设置为列表源(无引号)来引用数据验证中的范围。在这种情况下,确实有效 但是,我有一个下拉列表来控制要在子下拉列表中显示的a-M范围。 例如,A1中的下拉列表显示A、B、C、D作为选项。 B1中的下
a_颜色
,B_颜色
,等等。
这些表示颜色列表中已排序列的部分,按生产这些颜色的制造商的代码排序。这些是动态命名范围,由COUNTA
构建,用于表示mfr代码中有多少种颜色。根据我的计算,列表应该是连续的,因为列是按代码排序的
我知道我可以通过简单地将=A_colors
设置为列表源(无引号)来引用数据验证中的范围。在这种情况下,确实有效
但是,我有一个下拉列表来控制要在子下拉列表中显示的a-M范围。
例如,A1中的下拉列表显示A、B、C、D作为选项。
B1中的下拉菜单显示相对于A1中所选选项的下拉菜单选项
示例:
我从A1中的列表中选择A。
在单元格B1中,我希望我的下拉列表显示命名范围A\u colors
中的所有值
我尝试了各种方法将文本字符串A_颜色传递到DV list源字段,但都失败了。公式错误,或者范围计算为错误,或者它允许我从下拉列表中仅选择A_颜色
示例1:
A1选择一个
B1 DV盒:
=INDIRECT("$A$1")&"_Colours"
这会出现错误“列表源必须是带分隔符的列表,或对单个行或列的引用。”
这可能是因为表列表已排序吗?我不这么认为,因为上面的第一个例子很有效
示例2:使用C1中的辅助单元格创建文本字符串“A_颜色”,公式如下:
=$A$1&“颜色”
然后在B1单元的DV框中:
=INDIRECT("$C$1")
请帮我做到这一点!
多谢各位
[编辑]解决方案:
按照下面的说明创建新图纸。
为每个制造商创建标题(单元格A1中的“A”)。
在A2中输入公式(作为数组公式,Ctrl+Shift+Enter):
=索引(颜色,小)(如果((索引(颜色,1)=索引(MFR,匹配(A$1,MFR[MFRName],0),2)),匹配(行(颜色),行(颜色)),“”),行($B$1:B1)),列($A$1:$B1))
我对它进行了一些修改,但这要归功于
将公式应用到最后一个加上几个以允许扩展。
将公式应用于上一个标题
现在您已经有了绝对连续、单列且非动态的列表,因此满足了严格的数据验证标准
为每个列表创建一个命名范围,使用确切的名称保持简单,但我选择在末尾添加“名称”,例如MFR1colors
在DV源列表字段中引用它们(对于原始表中的单元格B2),如下所示:
=间接($B$2和“颜色”)
它的作用是:
颜色表中的外观:
制造商代码颜色代码
从制造商表“MFR”中查找原始表(“A”)单元格A1中MFR代码的第一个匹配实例,该表有以下列:
MFRName代码
按火柴拉出一行(行(颜色),行(颜色),“”)
按末尾的行和列检查所需的行和列。如果您有一个备用的辅助范围,则可以创建一个包含两列的简单代码表-
Color\u Reference
,Color\u name
并将其命名为c\u colors
:
A A_Colour
B B_Colour
C C_Colour
您可以在单元格B1上的dropdoon的CV列表配置中使用此选项:
=INDIRECT(VLOOKUP(A1;c_colors;2;FALSE))
试着看一下这里的示例,它也可能对您有所帮助:谢谢,这正是我最终要做的。这是一个混乱的解决方法,因为我必须找到表的元素。将用我是如何做到这一点的更新问题,但您的问题回答了我的问题,因此我将标记它已完成。