【问题标题】:Data Validation - Update Dynamically Based on Value in Table数据验证 - 根据表中的值动态更新
【发布时间】:2020-01-07 16:06:42
【问题描述】:

我的工作簿上有两个选项卡,第一个包含一个详细说明项目名称、阶段和任务的表格,用户会定期更新:

Project Name    Project Stage    Project Task    
------------------------------------------------------
Project 1       Design           First stage of design
Project 1       Design           Second stage of design
Project 1       Build            First stage of build
Project 1       Test             First stage of test
Project 2       Design           First stage of design
Project 2       Design           Second stage of design
Project 3       Design           Second stage of design

在我的第二个选项卡上,我想使用数据验证列表,用于显示项目每个阶段的每个任务的单独视图:

Project Name   |  *Validation list from column A in tab1
Project Stage  |  *Validation list based on the value in Project Name field
Project Task   |  *Validation list based on the value in Project Name AND Project Stage fields

我已将项目名称列表设置为从 Tab1 中的表中读取。我希望选项卡 2 中项目阶段的列表选项根据项目名称中选择的值进行更新。

我在这里和其他地方阅读了一些指南,这些指南似乎都涉及在单独的选项卡上创建多个命名表并使用 INDIRECT。理想情况下,我希望避免创建任何虚拟表,因为当文件移交给用户时,这将变得难以维护。

是否可以将项目阶段下拉列表配置为根据项目名称中的选择动态更新,仅显示该特定项目的 Tab1 中列出的阶段。

希望我已经充分表达了这一点。

【问题讨论】:

    标签: excel


    【解决方案1】:

    此解决方案仅在您的项目名称全部组合在一起时才有效,即您不会在 A 列中混搭 Project 1 | Project 3 | Project 1 | Project 5 | Project 3 | ...

    我还假设您的数据存储在单元格A1:C8

    据我了解,您希望有一个动态下拉列表(验证列表),它将显示:

    • B2:B5 范围为Project 1
    • B6:B7 范围为Project 2
    • B8:B8 范围为 Project 3

    为了实现这一点,我们需要使用MATCH 公式来查找您选择的项目名称的第一次出现,并将其与LOOKUP 结合以找到它的最后一次出现。创建一个命名范围(“ProjectName”)并使用以下公式(我假设在单元格 F2 中指定了项目名称):

    =OFFSET(Sheet1!$A$1,MATCH(Sheet1!$F$1,Sheet1!$A$1:$A$8,0)-1,1,LOOKUP(Sheet1!$F$1,Sheet1!$A$1:$A$8,ROW(Sheet1!$A$1:$A$8))-MATCH(Sheet1!$F$1,Sheet1!$A$1:$A$8,0)+1,1)
    

    以下是在验证列表中使用“ProjectName”后的最终结果:

    【讨论】:

      猜你喜欢
      • 2018-03-03
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 2019-04-01
      • 1970-01-01
      • 2021-01-14
      相关资源
      最近更新 更多