【发布时间】:2016-02-27 03:12:24
【问题描述】:
这似乎是一个我找不到答案的直截了当的问题。
我正在 Excel 中输入产品列表。我们的商店在这些部门内设置了部门和班级。
我有一列标记为“部门”,它从另一个工作表的命名列表中提取(使用数据验证)。 [也就是说,在 Validate: Settings 中,消息来源说“=departments”,这就是我命名该部门列表的名称]。
这工作得很好,我了解数据验证。我将整个部门列设置为使用数据验证在每条新记录上显示此列表。每次都有效,而且效果很好。
这就是问题所在。课程取决于部门。为了让这个简单,想象一下我有 2 个部门(我真的有大约 40 个部门和 100 个班级):
- 计算机
- 监视器
每个部门都有自己的产品类别:
- 计算机 = 笔记本电脑、台式机、机架式、服务器
- 显示器 = LCD、CRT、OLED
为了存储这些,我在第二张表上的 B 列中包含“计算机”的所有类,并将该列表命名为“计算机”。我在另一张表的 C 列中列出了三个监视器类,并将该列表命名为“监视器”
如果用户为新产品选择计算机部门,则下一列 Class 应显示计算机的可能类别(笔记本电脑、台式机...)
从我读过的所有内容来看,我应该做一个 INDIRECT() 查找...我可以很容易地为列中的单个单元格做到这一点。我可以转到第 4 行并单击“类”单元格并输入以下公式进行数据验证:
=INDIRECT($AF$4)
在这种情况下,“AF4”是一个计算,它具有部门的 LOWER 用下划线替换名称中的空格(然后我在我的列表中使用相同的命名约定)。例如:
=LOWER(SUBSTITUTE(I17," ","_"))
正如我所解释的,这适用于单个单元格。它不适用于整个列。也就是说,我无法选择整个列并输入该公式......它始终附加到 AF4(或我输入的任何内容)。我需要为每一行更改它。
我已经尝试了所有这些 - 它们都不起作用。
=INDIRECT(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,4))
=INDIRECT(ADDRESS(ROW(), "AF"))
=INDIRECT(INDIRECT("AF"&ROW()))
几乎每次我收到一条错误消息“源当前评估为错误 - 继续?”这意味着它永远不会起作用:-(
我希望这些信息足以让一些 Excel 专家帮助我。
谢谢!
【问题讨论】:
标签: excel validation drop-down-menu multiple-columns relational