返回符合两个条件的最早日期

返回符合两个条件的最早日期

我正在尝试让一个单元格返回与商店名称匹配的最早日期的值(公式中引用的 A5),并检查第一列是否过期。日期存储在“未结采购订单”表的 E 列中。有什么建议吗?

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案1

AGGREGATE 可能是一个不错的选择。它可以是一个公式,无需实际数组即可执行类似数组的计算。我说“可能”的原因是,只有 AGGREGATE 的某些函数执行数组计算……14 和 15 就是其中两个。我说“可能”是一个不错的选择的另一个原因是,在执行数组计算时,您要避免在数组中使用完整的列引用,如 F:F。这样做可能会导致进行大量多余的计算,并可能使您的系统陷入困境。数组计算应合理地限制在您正在处理的数据范围内。

让我们看看 AGGREGATE 函数及其组成部分

AGGREGATE(function #, What to include #, Calculation, parameter)
  • 函数 14 和 15 将按从大到小的顺序对结果进行排序,而另一个函数将按另一个方向排序
  • 包含的内容 #,有多个选项可以忽略隐藏行或给出错误的结果。我倾向于使用 6,它会忽略错误但包含其余内容。您可能需要进行调整以满足您的需求。
  • 计算是您要放置所需信息和条件检查的区域。您的条件检查实际上是返回 TRUE 或 FALSE 的布尔函数。如果我们通过数学运算发送它们,excel 将转换 TRUE=1 和 FALSE=0。因此,如果聚合设置为忽略错误,并且您只对符合条件的信息感兴趣,请将您的信息除以条件。假条件将生成 div by 0 错误,然后聚合函数将忽略相应的信息。
  • 对于某些函数来说,参数是一个可选值,但对于 14 和 15,它告诉 AGGREGATE 您感兴趣的值在排序结果中的哪个位置。在此处放置 1 将返回最小或最大数字,具体取决于您使用的是函数 14 还是 15。

因此,对于你的公式,我们会做类似的事情:

=AGGREGATE(14,6,'Open POs'!E2:E100/(('Open POs'!A2:A100="Overdue")*('Open POs'!F2:F100=$A5),1)

如果这给出了最早的日期,则将 14 更改为 15。调整范围以适合您的数据,而不是使用完整的列引用。

警告:您的日期需要存储为 Excel 日期时间序列,而不是字符串。您可以通过 ISNUMBER(F4) 进行测试,其中 F4 是您的日期单元格之一。如果结果为 false,则需要转换您的日期。

相关内容