【问题标题】:Excel dynamic drop down List by filtered tableExcel动态下拉列表按过滤表
【发布时间】: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,颜色下拉菜单应包含蓝色和绿色。

【问题讨论】:

    标签: excel validation drop-down-menu excel-formula


    【解决方案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))) 进行数据验证
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多