获取行中的“最近”开始日期和“最近”结束日期

获取行中的“最近”开始日期和“最近”结束日期

我有包含 3 列字段的数据start datefinish dateprogress

用户报告示例:

开始日期 结束日期 进步
2022 年 1 月 12 日 2022 年 1 月 13 日 20

用户将这三列一遍又一遍地添加到此文件中。

因此 1 行包含第 n 列。

例如“附加报告”

前 3 列是用户 1,后 3 列是用户 2

开始日期 结束日期 进步 开始日期 结束日期 进步
2022 年 1 月 12 日 2022 年 1 月 13 日 20 2022 年 1 月 11 日 2022 年 1 月 12 日 20

在所有这些“报告”栏之前,有 2 个摘要栏

最后报告的开始日期 最后报告的结束日期 ETC....
2022 年 1 月 11 日 2022 年 1 月 12 日 ETC...

我需要与last reported start date在下输入的最右边的日期相匹配start date

我需要与last reported end date在下输入的最右边的日期相匹配end date

请注意,可能缺少开始日期和/或结束日期 在这种情况下,它会检查左边的下一列...因此,从右边开始在此行内查找日期,不管它是最大日期还是最小日期。

这种做法确实有效

IFNA(LOOKUP(2,1/($P15:$AAZ15>D15),$P15:$AAZ15),[@[Planned Start Date]])

但它还不够智能,只能使用start dateinLast Reported start dateend dateforlast reported end date

使用上面的例子我最终得到的结果

最后报告的开始日期 最后报告的结束日期 ETC....
2022 年 1 月 12 日 2022 年 1 月 12 日 ETC...

完整报告如下

最后报告的开始日期 最后报告的结束日期 开始日期 结束日期 进步 开始日期 结束日期 进步 开始日期 结束日期 进步 ETC...
2022 年 1 月 12 日 2022 年 1 月 9 日 2022 年 1 月 12 日 - 20 - 2022 年 1 月 21 日 5 - 2022 年 1 月 9 日 50 ETC

请注意,这里我想要的两天是指​​定的唯一开始日期(在本例中为 2022 年 1 月 12 日),然后(因为有多个结束日期)是最右边的结束日期(即 2022 年 1 月 9 日)

答案1

如果我理解正确的话,您每天要输入 9 列数据。每条记录包含 3 组数据,每组数据包括Start DateEnd DateProgress。并非所有这些字段都会被填写。这意味着您可能会有这样的一行:

数据示例

您希望提取最右侧的Start Date和值,即使它们不是该行中输入的最大值。您可以像这样提取:End DateStart Date

=INDEX(2:2,MAX(IF(($1:$1="Start Date")*(2:2>0),COLUMN(2:2))))
  • INDEX(2:2,因为我们要从第 2 行提取一些值。您不必引用整行(这里或其他地方),但它会使您的公式在数据不断增长时继续起作用。
  • ($1:$1="Start Date")*(2:2>0)是数组以外的一种使用方法AND。当您强制 TRUE/FALSE 值进行数学运算时,它们会变成 1/0 值。但是,如果它正在寻找 TRUE/FALSE 值并且您给它 1/0 值,它仍然会很高兴。这将是一个 TRUE/FALSE 数组,只有当第一行中的文本为“开始日期”并且此行中的值不为 0 时,它才是 TRU。除非您认为有人会输入 1/0/1900 作为日期,否则这样做没问题。您也可以检查不等于空白,但这种方法有效。
  • IF((~)*(~),COLUMN(2:2))将返回列号(当这两个条件为真时)或 FALSE(视为 0)。
  • MAX(IF((~)*(~),COLUMN(2:2)))然后,将找到上述两个条件都为真的最高列号。
  • INDEX(2:2,MAX())将从第 2 行(即这两个条件都为真的最后一列)中提取值。

对于End Date,你可以做一些非常类似的事情:

=INDEX(2:2,MAX(IF(($1:$1="End Date")*(2:2>0),COLUMN(2:2))))

...或者,如果您认为某人可能会输入开始日期而不输入结束日期,并且您想要获取最后一个开始日期右侧的任何值:

=INDEX(2:2,MAX(IF(($1:$1="Start Date")*(2:2>0),COLUMN(2:2)))+1)

注意:2:2是相对的,但$1:$1也是绝对的。这允许您将公式放在第 2 行,然后将其向下复制以更新行引用,但不更新标题行引用。

相关内容