Excel: 创建两列下拉列表,其中一列依赖于另一列

Excel: Create two columns of pulldown lists with one dependent on another

这似乎是一个直截了当的问题,但我找不到答案。

我正在 Excel 中输入产品列表。我们的商店在这些部门中设置了 Departments 和 Classes。

我有一个标记为 "Department" 的列,它从另一个 Sheet 的命名列表中提取(使用数据验证)。 [也就是说,在 Validate: Settings 中,源说“=departments”,这是我命名的部门列表]。

这工作得很好,我理解数据验证。我将整个部门列设置为使用数据验证在每个新记录上显示此列表。每次都有效,效果很好。

问题来了。 Classes 取决于部门。为了简单起见,假设我有 2 个部门(我实际上有大约 40 个部门和 100 个 类):

每个部门都有自己的 类 产品:

为了存储这些,我在第二个 sheet 上有 B 列,其中包含 "Computers" 的所有 Classes 并将该列表命名为 "computers"。我在另一个 sheet 的 C 列中列出了三个监视器 类 并将该列表命名为 "monitors"

如果用户为新产品选择部门计算机,下一列 Class 应该显示可能的 类 计算机(笔记本电脑、台式机...)

从我读过的所有内容来看,我应该进行 INDIRECT() 查找...对于列中的单个单元格,我可以很容易地做到这一点。我可以转到第 4 行并单击 Class 单元格并输入此公式进行数据验证:

 =INDIRECT($AF)

在这种情况下,"AF4" 是一个计算,其中部门的较低部分用下划线替换名称中的空格(然后我在我的列表中使用相同的命名约定)。例如:

 =LOWER(SUBSTITUTE(I17," ","_"))

正如我所解释的,这适用于单个细胞。它不适用于整个列。也就是说,我不能 select 整列并放入该公式...它始终附加到 AF4(或我放入其中的任何内容)。我需要为每一行更改它。

我已经尝试了所有这些 - none 其中有效。

 =INDIRECT(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,4))
 =INDIRECT(ADDRESS(ROW(), "AF"))
 =INDIRECT(INDIRECT("AF"&ROW()))

几乎每次我都收到一条错误消息说 "The source currently evaluates to an error - Continue?",这意味着它永远不会工作:-(

我希望这些信息足以让 Excel 专家帮助我。

谢谢!

好的,我用你的例子成功了。我在Sheet2的A列输入了部门,B列输入了产品,是这样的:

Computers   Laptop
Computers   Desktop
Computers   Rack Mount
Computers   Server
Monitors    LCD
Monitors    CRT
Monitors    OLED

然后我为 A 列设置一个动态命名范围以减少 Excel 上的查找负载。我将范围命名为 "DeptsForProducts"。重要的是,您不仅要为每个产品行重复部门名称,还要对列进行排序,以便计算机部门的所有产品都在一起,显示器行的所有产品都在一起,等等。

然后,return 到您原来的 sheet(我使用 Sheet1;A 列包含部门验证,B 列是我希望显示产品验证的位置)。 Select所有B列,打开数据验证window,将Allow:改为List,输入以下公式:

=OFFSET(Sheet2!$B,MATCH(A1,DeptsForProducts,0)-1,0,COUNTIF(DeptsForProducts,A1))

您将再次收到 "Source currently evaluates to an error" 消息;忽略它并单击是。现在,B 列中任何包含 A 列中的计算机的单元格都将有一个下拉列表,包括笔记本电脑、台式机、机架安装或服务器; B 列中任何带有 A 列监视器的单元格都会有一个 LCD、CRT 或 OLED 下拉列表;任何包含空白或无效部门的单元格将没有可用的下拉列表。

2013 年 Excel 测试。