如何为数据validation创build一个dynamic列表源?
目前,我正在使用下面的方式来检索数据validation的值,问题是当我将它设置为Source
,我得到The list source must be a delimited list, or a reference to a single row or column.
我如何才能使这个数据validation源可用?
=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)))))
我想做的是做一个索引/匹配,并从列中find值,然后检索第n个值。
例如:
- 在列A中查找
MyValueA
- C列中的返回值(
MyValueC1, MyValueC2, MyValueC3
)。 - 数据validation用作下拉菜单,允许用户select第一个项目或不select任何项目。
- M列 – 用户可以使用下拉菜单从步骤2中select第一个项目 – 在这种情况下,
MyValueC1
- 类似于列N到R
我不能使用的东西:
- UDF在数据validation中不起作用
- 定义名称不起作用,因为它将值设置为静态。
绿色的单元格是应该具有数据有效性下拉列表的单元格,供用户select场景。
- 第1行用作标题
- 第2行是场景#1的摘要描述符,它有三个场景(场景#1,场景#2,场景#3)。
- 第3行和第4行用于用户select想要具有特定颜色的场景,但使用“数据validation”下拉列表的“select列(列M至R)”由“场景”可用的场景确定。
- select#1链接到场景#1的场景#1的第3和第4行(下拉菜单仅显示场景#1)
- select#2链接到scheme#1的场景#2的第3和第4行(下拉菜单仅显示场景#2)
- select#3链接到scheme#1的场景#3的第3和第4行(下拉菜单仅显示场景#3)
- select#4连接到场景#1的场景#4,对于第3行和第4行(但没有场景#4,所以下拉框应该显示为空白)
- select#5链接到scheme#1的场景#5,对于行3和4(但是没有场景#5,因此下拉应该显示为空白)
- select#6链接到场景#1的场景#6的第3和第4行(但没有场景#6,所以下拉框应该显示为空白)
那么对于情景#2(行5和行6)和情景#3(行7和行8)
在单元格中工作的公式,但不在数据有效性中来源:
=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中单元格的场景列表中select第二个场景: =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)))))
如果我的理解是正确的,你有:
- 场景列表,至less1到3个,以及每个场景的场景列表。
- 应用于每个场景的场景颜色列表(根据提供的示例有4个选项) 。
- 对应于每个Scenario \ Scene的选项(从1到6) (即,select#n总是对应于场景#X \ Scene #n),因此对于每个Scenario \ Scene \ Scene Color只有一个可能的select。
- 为每个场景\场景分配场景颜色的表(一种场景\场景可能具有多种场景颜色,即场景#1 \场景#1)
该解决scheme包括:
- 在工作表级别(范围)添加一个定义的名称(名为
DATA
) ,以包含所有场景作为标题,每个场景下面的所有相应场景 – 每个单元格一个[A1:C4]
图。1
- 添加一个列表来保存所有的场景分配器
[E1:E5]
– 可选,如果你想要把场景颜色作为下拉菜单
图2
- 添加dynamic定义名称(名为
DtaVld
),以允许使用下拉菜单来指定场景颜色:
select单元格I2
并使用以下公式添加dynamic定义的名称:
=INDEX(DATA,1+RIGHT(I$1,1),MATCH($G2,INDEX(DATA,1,0),0))
图3
- 添加一个范围(结果表)分配场景颜色
[G1:N5]
由于“结果表”基本上将情景颜色分配给场景\场景,所以我冒昧地将场景颜色字段移动到表的开头。
见图4
在字段中的“结果表”中input以下Formulas \ DataValidations:
scheme:要允许selectscheme,请使用此公式添加“数据validation”以指向“定义的名称” DATA
的标题
=INDEX(DATA,1,0)
见图5
场景颜色:为了允许select场景颜色,在$E$2:$E$5
的列表中添加一个数据validation指针
select#n's (所有单元格I2:N5
) :添加指向dynamic定义名称DtaVld
的数据validation