代码之家  ›  专栏  ›  技术社区  ›  jfgoodhew1

在数据验证中按公式引用命名范围

  •  0
  • jfgoodhew1  · 技术社区  · 7 年前

    大家好,大家好。

    我有一系列命名范围, A_Colours ,则, B_Colours 等 这些代表颜色列表中已排序列的部分,按生产这些颜色的制造商的代码排序。这些是动态命名范围,由 COUNTA 制造商代码有多少种颜色。根据我的计算,列表应该是连续的,因为列是按代码排序的。

    我知道我可以通过简单的设置来参考数据验证中的范围 =A_Colours 作为列表源(无引号)。这 确实有效 在这种情况下。

    但是,我有一个下拉列表来控制要在子下拉列表中显示哪个a-M范围。 例如,A1中的下拉列表将A、B、C、D显示为选项。 B1中的下拉列表显示相对于A1中所选选项的下拉列表选项。

    示例: 我从A1中的列表中选择A。 在单元格B1中,我希望下拉列表显示命名范围中的所有值 A\U颜色

    我尝试了各种方法将文本字符串A\U颜色传递到DV列表源字段,但都失败了。公式中有错误,或者范围计算为错误,或者它只允许我从下拉列表中选择A\U颜色。

    示例1: A1选择A B1 DV箱:

    =INDIRECT("$A$1")&"_Colours"
    

    这会出现错误“列表源必须是带分隔符的列表,或对单行或列的引用。”

    这可能是因为表列表已排序?我不这么认为,因为上面的第一个例子很有效。

    示例2: 使用C1中的辅助单元格创建文本字符串“A\U颜色”,公式如下: =$A$1&“\u颜色”

    然后在B1单元的DV框中:

    =INDIRECT("$C$1")
    

    请帮我做到这一点! 非常感谢。

    [编辑]解决方案:

    按照以下指示创建新图纸。 为每个制造商创建标题(单元格A1中的“A”)。 在A2中输入公式(Ctrl+Shift+Enter作为数组公式):

    =索引(颜色,小号(IF)((索引(颜色,1)=索引(MFR,匹配(A$1,MFR[MFRName],0),2)),匹配(行(颜色),行(颜色)),“”),行(B$1:B1)),列(A$1:$B1))

    我对它进行了一些修改,但这要归功于 https://www.get-digital-help.com/2009/09/28/extract-all-rows-from-a-range-that-meet-criteria-in-one-column-in-excel/

    将公式应用到最后一个加上几个以允许扩展。 将公式应用于上一个标题。

    现在,您的列表肯定是连续的、单列的,并且不是动态的,因此满足数据验证的严格标准。

    为每个列表创建一个命名范围,使用确切的名称保持简单,但我选择在末尾添加“名称”,例如MFR1colors。

    在DV源列表字段中引用它们(对于原始表中的单元格B2),如下所示: =间接(2美元和“颜色”)

    其作用: 颜色表中的外观: 制造商代码颜色代码

    从制造商表“MFR”中的原始表(“A”)单元格A1中查找MFR代码的第一个匹配实例,该表有以下列: MFRName代码

    按火柴拉出一行(行(颜色,行(颜色),“”)。

    按末尾的行和列检查所需的行和列。

    1 回复  |  直到 7 年前
        1
  •  1
  •   jbrezik    7 年前

    如果您有一个备用的助手范围,那么可以创建一个包含2列的简单代码表- Color_Reference ,则, Color_Names 并命名它 c_colors :

    A A_Colour
    B B_Colour
    C C_Colour
    

    您可以在单元格B1上的dropdoon的CV列表配置中使用此选项:

    =INDIRECT(VLOOKUP(A1;c_colors;2;FALSE))
    

    试着看一下这里的例子,它也可能对您有所帮助: http://www.contextures.com/xlDataVal02.html

    推荐文章