0

如果我理解正确,使用间接()函数,第二个列表必须用第一个列表中的项目命名。例如,在第一列“国家”中,我写:美国、加拿大、法国、西班牙……然后我需要为每个国家/地区提供一列及其城市列表,并且列表必须根据国家/地区命名列表。

我想通过三个步骤创建项目名称:Name1、Name2 和 Name3。(Name2 取决于 Name1 等等)

我希望列表名称独立于列表内容(因此每个用户都可以根据其项目填充列表)。

我想将我的列表命名如下:

一级列表:N

二级列表:

N1、N2、N3、N4...

三级列表:

N1.1、N1.2、N1.3

N2.1、N2.2

N3.1...

...

如果需要保持可实现性,我们可以将每个列表限制为最多 10 或 15 个项目。

如果你能在没有 VBA 的情况下帮助我,那就太好了

提前谢谢

4

2 回答 2

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 & P 列所示 - 相同的结果)。
结果- 原始它是不删除空白的搜索方法,结果重建它是没有空白的结果......
公式仅显示1°等级的字段,而不是子数据。
您可以隐藏不需要的列...
对于带有空白的结果,您只能使用 F / H / L / M 列。
显然通过 VBA 它更简单...

于 2014-05-27T07:14:43.080 回答
0

最后,我可以使用函数在数据验证中做到这一点:

=offset()

indirect()
index()
match()

并列出

我认为使用 Vlookup() 也是可能的,但我在使用 3 个嵌套的 vlookup 时遇到了问题。

使用提到的 4 个函数,我可以做 3 个下拉动态列表。

我确信有一种更简单、更优雅的方法,但我最终还是成功了。

我无法编写所有的 Excel 表格,但如果有时可以帮助某人,我可以粘贴函数:

尼维尔 1

=OFFSET(Topic1;0;0;COUNTA(Topic1);1)

尼维尔 2

=OFFSET(INDIRECT(INDEX(TopicsLevel2;MATCH(C15;Topic1;0)));0;0;COUNTA(INDIRECT(INDEX(TopicsLevel2;MATCH(C15;Topic1;0))));1)

尼维尔 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 的名称的串联。

于 2014-05-28T18:02:37.157 回答