如何为数据验证创建动态列表源?

时间:2014-04-14 20:33:22

标签: excel excel-formula validation

目前,我使用以下内容检索数据验证的值,问题是当我将其设置为Source时,我得到The list source must be a delimited list, or a reference to a single row or column.如何将其作为数据使用验证来源?

=TRIM(LEFT(SUBSTITUTE(MID(INDEX($B:$B,MATCH($A3,$A:$A,0)),FIND("|",SUBSTITUTE(INDEX($B:$B,MATCH($A3,$A:$A,0)),",","|",1))+1, LEN(INDEX($B:$B,MATCH($A3,$A:$A,0)))),",",REPT(" ",LEN(INDEX($B:$B,MATCH($A3,$A:$A,0))))),LEN(INDEX($B:$B,MATCH($A3,$A:$A,0)))))

我想做的是做索引/匹配并从列中查找值然后检索第n个值。

例如:

  1. 在A栏中查找MyValueA
  2. C列中的返回值(MyValueC1, MyValueC2, MyValueC3)。
  3. 数据验证用作下拉列表,允许用户选择第一项或不选择任何内容。
  4. M栏 - 用户可以使用下拉菜单从第2步中选择第1项 - 在这种情况下,MyValueC1
  5. 类似于列N至R.
  6. 我无法使用的东西:

    • UDF不参与数据验证
    • 定义的名称不起作用,因为它将值设置为静态。

    enter image description here

    绿色的单元格应该具有数据验证下拉列表,供用户选择场景。

    • 第1行用作标题
    • 第2行是场景#1的摘要描述符,它有三个场景(场景#1,场景#2,场景#3)。
    • 用户使用第3行和第4行选择他们想要具有特定颜色的场景,但使用数据验证下拉列表的选择列(列M到R)由场景可用的场景确定。
      • 选择#1链接到第3行和第4行的场景#1的场景#1(下拉列表仅显示场景#1)
      • 选择#2链接到第3行和第4行的场景#1的场景#2(下拉列表仅显示场景#2)
      • 选择#3链接到第3行和第4行的场景#1的场景#3(下拉列表仅显示场景#3)
      • 选择#4链接到第3行和第4行的场景#1的场景#4(但没有场景#4,因此下拉列表应显示为空白)
      • 选择#5链接到第3行和第4行的场景#1的场景#5(但没有场景#5,因此下拉列表应显示为空白)
      • 选择#6链接到场景#1的场景#6(第3行和第4行)(但没有场景#6,因此下拉列表应显示为空白)

    然后对场景#2(第5行和第6行)和场景#3(第7行和第8行)提出相同的想法

    在单元格中工作但不在数据验证来源中的公式来源:

    从B列中的单元格的场景列表中选择第一个场景: =LEFT(SUBSTITUTE(INDEX(B:B,MATCH(A3,A:A,0)), ",", "|", 1),FIND("|",SUBSTITUTE(INDEX(B:B,MATCH(A3,A:A,0)), ",", "|", 1),1)-1)

    从B列中的单元格的场景列表中选择第二个场景: =TRIM(LEFT(SUBSTITUTE(MID(INDEX($B:$B,MATCH($A3,$A:$A,0)),FIND("|",SUBSTITUTE(INDEX($B:$B,MATCH($A3,$A:$A,0)),",","|",1))+1, LEN(INDEX($B:$B,MATCH($A3,$A:$A,0)))),",",REPT(" ",LEN(INDEX($B:$B,MATCH($A3,$A:$A,0))))),LEN(INDEX($B:$B,MATCH($A3,$A:$A,0)))))

1 个答案:

答案 0 :(得分:0)

如果我的理解是正确的,你有:

  1. 场景列表,至少1到3个,以及每个场景的场景列表。
  2. 要应用于每个场景的场景颜色列表(根据提供的示例选择4个选项)
  3. 从1到6的选择,对应于每个场景\场景(即选择#n始终对应于场景#X \场景#n)因此每个场景只有一个可能的选择\场景\场景颜色。
  4. 将场景颜色指定给每个场景\场景的表格(一个场景\场景可能有多个场景颜色,即场景#1 \场景#1)
  5. 此解决方案包括:

    1. 在工作表级别(范围)添加已定义名称​​(名为DATA,以包含所有方案作为标头,并在每个方案下方包含所有相应的场景 - 每个单元格[A1:C4]
    2. enter image description here 图1

      1. 添加列表以容纳所有场景曲目[E1:E5] - 如果您想将场景颜色作为下拉列表,也可以选择
      2. enter image description here 图2

        1. 添加动态定义名称​​(名为DtaVld),以允许使用下拉菜单指定场景颜色:
        2. 选择单元格I2并使用以下公式添加动态定义名称:

          =INDEX(DATA,1+RIGHT(I$1,1),MATCH($G2,INDEX(DATA,1,0),0))
          

          enter image description here 图3

          1. 添加范围(结果表)以指定场景颜色[G1:N5]
          2. 由于“结果表”基本上将场景颜色分配给场景\场景我随意将场景颜色字段移动到表格的开头。

            enter image description here 见图4

            按字段在“结果表”中输入以下公式\ DataValidations:

            方案:要允许选择方案,请使用此公式添加数据验证,以指向已定义名称DATA的标头

            =INDEX(DATA,1,0)
            

            enter image description here 见图5

            场景颜色:要允许选择场景颜色,请添加指向$E$2:$E$5

            列表中的数据验证

            选择#n (所有单元格I2:N5:添加指向动态定义名称DtaVld

            的数据验证