Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 数据验证-根据表中的值动态更新_Excel - Fatal编程技术网

Excel 数据验证-根据表中的值动态更新

Excel 数据验证-根据表中的值动态更新,excel,Excel,我的工作簿上有两个选项卡,第一个选项卡包含一个表格,详细说明项目名称、阶段和任务,用户将定期更新该表格: Project Name Project Stage Project Task ------------------------------------------------------ Project 1 Design First stage of design Project 1 Design Seco

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

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
我已经设置了从表1中读取的项目名称列表。我希望根据项目名称中选择的值更新选项卡2中项目阶段的列表选项

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

是否可以将Project Stage下拉列表配置为基于Project Name中的选择动态更新,仅显示该特定项目在选项卡1中列出的阶段


希望我已经充分阐述了这一点。

只有当您的项目名称都分组在一起时,此解决方案才会起作用,即您不会在a列中混搭
项目1 |项目3 |项目1 |项目5 |项目3 |……

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

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

  • B2:B5
    项目1的范围
  • B6:B7
    项目2的范围
  • B8:B8
    项目3的范围
为了实现这一点,我们需要使用
MATCH
公式来查找所选项目名称的第一个匹配项,并将其与
LOOKUP
相结合以查找其最后一个匹配项。创建一个命名范围(“ProjectName”)并使用以下公式(我假设在单元格F2中指定了项目名称):

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


只有当您的项目名称都分组在一起时,此解决方案才会起作用,也就是说,您不会在a列中混搭
项目1 |项目3 |项目1 |项目5 |项目3 |……

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

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

  • B2:B5
    项目1的范围
  • B6:B7
    项目2的范围
  • B8:B8
    项目3的范围
为了实现这一点,我们需要使用
MATCH
公式来查找所选项目名称的第一个匹配项,并将其与
LOOKUP
相结合以查找其最后一个匹配项。创建一个命名范围(“ProjectName”)并使用以下公式(我假设在单元格F2中指定了项目名称):

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

=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)