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)>0)))
进行数据验证以上是关于Excel动态下拉列表按过滤表的主要内容,如果未能解决你的问题,请参考以下文章
EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]
创建一个按日期月份过滤的下拉列表(pandas + plotly)