Excel动态下拉列表按过滤表

Posted

技术标签:

【中文标题】Excel动态下拉列表按过滤表【英文标题】:Excel dynamic drop down List by filtered table 【发布时间】:2017-11-03 19:18:02 【问题描述】:

您好,我在 Excel 中的数据验证列表有问题。

首先,我在受保护的选项卡中有一个表(名为:文章),具有四个属性(名称、性别、颜色、价格)。两篇或多篇文章可能具有相同的名称,但在性别(男性或女性)或颜色方面有所不同。

Name         | Sex       | Colour     | Price
-------------|-----------|------------|---------
Product1     | Male      | Blue       | 10
Product1     | Male      | Green      | 10
Product1     | Female    | Pink       | 5
Product2     | Male      | Grey       | 8
Product2     | Female    | Orange     | 8

在主选项卡中,我在不同的表中组织了订单(称为:订单)。

Product      | Sex       | Colour     | Quantity   | Price
-------------|-----------|------------|------------|---------
<List>       | <List>    | <List>     |            | <Calculation>

产品下拉列表(数据验证 | 列表 | 来源 -> =INDIREKT("Article[Name]"))

和性别(数据验证 | 列表 | 来源 -> 男性;女性)很容易。

但是我如何获得颜色列表 - 取决于产品名称和性别?

例如 Product = Product1 和 Sex = Male,颜色下拉菜单应包含蓝色和绿色。

【问题讨论】:

【参考方案1】:

首先,您需要更改表格的结构。使用数组公式复制并转置它,输入为 Ctrl+Shift+Enter:

=TRANSPOSE(TABLE)

您需要以下形式的表格:

Product 1 | Product2 | Product 3

Green     | Grey     | Pink

Blue      | Orange   | White

然后,您将这些列中的每一列定义为命名范围。您可以选择整个表并转到公式 > 从选择创建(在定义的名称部分中)。仅标记“顶行”并单击“确定”。现在您已经命名了可以在依赖或级联下拉列表中使用的范围。在这一个中,您的来源将是:

=INDIRECT(A1) 'Replace A1 with the location of your first-level dropdownlist

当然,如果您需要在二级下拉列表中添加额外的条件,它会变得相当复杂。首先,您的表格需要采用以下结构:

Product 1Male | Product1Female | Product 2Male | Product 2Female

Green         | Grey           | Pink          | Red

Blue          | Orange         | White         | Pink

依赖下拉列表的公式为:

=INDIRECT(A1&A2) 'Where A1 and A2 are the locations of your other 2 dropdown lists.

这应该可以满足您的需要。如果需要进一步澄清,请告诉我。

【讨论】:

非常感谢。它对我有用,但只是为了一般理解。有没有可能获得匹配两个或多个属性的所有项目的列表或数组?像 sql 中带有 where 子句的 Select? 您想要的绝对是可行的 - 输入与“文章”表一样多行的范围:=IF(((Article[Name]=A1)*(Article[Sex]=A2))=1,Article[Color],"")(A1 和 A2 分别是包含您的产品和性别的单元格)为Ctrl+Shift+Enter 的数组公式。但是,Excel 不允许您在数据验证中使用数组公式,这就是我在原始解决方案中没有提到这一点的原因。您可以将其添加到隐藏工作表中的辅助列中,并基于此列进行数据验证,但我不知道这是否适合您。 另外,请注意此帮助列将包含几个空白行,您可以在此处查看如何删除这些行get-digital-help.com/2007/09/16/excel-remove-blank-cells/#array,然后基于=OFFSET($B$1,0,0,SUMPRODUCT(--(LEN(B:B)&gt;0))) 进行数据验证

以上是关于Excel动态下拉列表按过滤表的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]

Excel中设置下拉列表的来源怎么选择其他工作表的内容

使用 php 变量创建动态 mysql 查询

创建一个按日期月份过滤的下拉列表(pandas + plotly)

基于 HTML 5 Geo Location 按表单选择下拉列表过滤结果

[使用多个选择下拉列表过滤HTML表