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))

试着看一下这里的示例,它也可能对您有所帮助:

谢谢,这正是我最终要做的。这是一个混乱的解决方法,因为我必须找到表的元素。将用我是如何做到这一点的更新问题,但您的问题回答了我的问题,因此我将标记它已完成。