【问题标题】:Conditional data validation using excel lists使用 excel 列表进行条件数据验证
【发布时间】:2017-01-10 15:19:32
【问题描述】:

我正在编写一份工作簿来管理家庭装修业务的费用。名为 'Jobs' 的表包含一个 'status' 列,该列可以包含各种选项,例如 'Job started'、'Job complete'、'invoice sent' 等。

我打算创建另一个名为“费用”的表,我可以在其中添加费用,但仅限于状态设置为“已开始工作”的工作。为此,我将有一个包含列表数据验证的列,但我不知道如何生成仅具有相应相应状态的作业列表。

费用表:

工作表:

杂项清单:

为清楚起见进行编辑: 在显示的示例中,当我单击“费用”表的“工作地点”列中的项目时,我希望在列表中看到“Werribee”、“Croydon South”和 Pascoe Vale South”(因为它们的状态是“工作开始')

【问题讨论】:

  • 您要添加 Jobs 表中的哪一列。你可以使用一个简单的公式,比如=SUMIF(I2:I12,"Job started",F2:F12)

标签: excel validation


【解决方案1】:

你可以使用这个公式。

你 A2 把这个放在费用表中。

=IFERROR(INDEX(Jobs!$A$2:$A$999,SMALL(IF(Jobs!$I$2:$I$999="Job started",ROW($1:$100)),ROW()-1)),"")

基本上这会查找工作表 Job, A2:A999 并检查其状态是否为“Job started”,如果其验证是肯定的,它会复制具有“Job started”的范围 A2:A999 中的值,粘贴这在费用表的每个单元格上。

不要忘记这是一个数组公式,所以在复制公式后按 Ctrl+Shift+Enter

【讨论】:

    【解决方案2】:

    在费用表旁边的空列(例如 F)中,使用以下 2 公式

    第一行

    F2 = 1/AGGREGATE(14,6,1/((JOBS!$I$2:$I$14="Job started")*(ROW(JOBS!$I$2:$I$14)>1)*ROW(JOBS!$I$2:$I$14)),1)
    

    下一行

    F3 = 1/AGGREGATE(14,6,1/((JOBS!$I$2:$I$14="Job started")*(ROW(JOBS!$I$2:$I$14)>F2)*ROW(JOBS!$I$2:$I$14)),1)
    

    向下拖动 F3。注意F2 中的>1F3 中的>F2 及以后。这将在 Jobs 表中给出所有具有“Job started”状态的行号

    获得行号后,您可以使用Index(Jobs table, row num, column num) 获取这些行的其他数据

    确保您在公式中输入的 Jobs 表范围从第一行开始,即 A1:J7,如图所示

    示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-26
      • 2019-08-12
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多