如果我理解正确,使用indirect()函数,第二个列表必须使用第一个列表中的项目命名。 例如,在第一栏“国家”我写道:美国,加拿大,法国,西班牙...... 然后我需要为每个国家/地区列一个列,列出他们的城市列表,并且必须根据国家/地区列表命名列表。
我想在三个步骤上创建项目名称:Name1,Name2和Name3。 (使用Name2取决于Name1等)
我希望列表名称独立于list conent(因此每个用户可以根据其项目填充列表)。
我想将我的名单命名如下:
第一级列表: Ñ
第二级列表:
N1,N2,N3,N4 ......
第三级列表:
N1.1,N1.2,N1.3
N2.1,N2.2
... N3.1
...
如果需要保持可行,我们可以将每个列表限制为最多10或15个项目。
如果没有VBA,你可以帮助我,这将是很棒的
提前谢谢
答案 0 :(得分:0)
根据以下方案:
使用这些公式:
F4 -> =IF(LEFT(B4;LEN($F$3))=$F$3;B4;"")
H4 -> =OR(IFERROR(FIND(".";F4;LEN($F$3)+2)>0;FALSE);F4=$F$3)
J4 -> =IF(L4="";J3;J3+1)
K4 -> =IF(M4="";"";J4)
L4 -> =IF(H4;"";F4)
M4 -> =IF(L4<>"";C4;"")
O4 -> =IFERROR(VLOOKUP(ROW(P1);$J$4:$M$17;3;);"")
P4 -> =IFERROR(VLOOKUP(ROW(P1);$K$4:$M$17;2;);"")
Q4 -> =IFERROR(VLOOKUP(ROW(P1);$K$4:$M$17;3;);"")
列J结果索引不清楚,比我创建干净的列K(=没有重复的索引 - 但没有必要,如列O&amp; P所示 - 相同的结果)。
结果 - 原始这是没有删除空白的搜索方法,结果重建这是没有空白的结果...
公式仅显示1°等级的字段,而不显示子数据。
您可以隐藏不需要的列...
对于结果使用空格,您只能使用列F / H / L / M.
显然,VBA更简单......
答案 1 :(得分:0)
最后,我可以使用函数进行数据验证:
=offset()
indirect()
index()
match()
和列表
我认为也可以使用Vlookup(),但我遇到了3个嵌套vlookup的问题。
通过上述4个功能,我可以做3个下拉动态列表。
我确信有一种更简单,更优雅的方式,但我最终得到了它。
我无法编写所有excel表格,但如果有时可以帮助某人,我可以粘贴功能:
Nivel 1
=OFFSET(Topic1;0;0;COUNTA(Topic1);1)
Nivel 2
=OFFSET(INDIRECT(INDEX(TopicsLevel2;MATCH(C15;Topic1;0)));0;0;COUNTA(INDIRECT(INDEX(TopicsLevel2;MATCH(C15;Topic1;0))));1)
Nivel 3
=OFFSET(INDIRECT($F15);0;0;COUNTA(INDIRECT($F15));1)
在F15中
=INDEX(TopicsLevel2;MATCH(C15;Topic1;0))&INDEX(Suffix;MATCH(D15;INDIRECT(INDEX(TopicsLevel2;MATCH(C15;Topic1;0)));0))
列表名称nivel 3是列表nivel 1和列表nivel 2的名称的串联。