正如 Harun24Hr 所说,FILTER 和 QUERY 是你的朋友。
我在一个看起来像这样的表中重新创建了您的场景
最大值公式如下。
=MAX(FILTER(B2:B,A2:A >= C2, A2:A <= D2))
如果我为了可读性而用命名范围替换范围。
=MAX(FILTER( values, dates >= start_date, dates <= end_date))
最大解释
最大值公式将确定并返回数组中的最大值。最大值(数组)
过滤器解释
过滤器函数将返回一个符合条件的值数组。我们在 MAX 的数组字段中使用它。
过滤器(数组,条件1,条件2...等)
最大值日公式如下。
=INDEX(FILTER(A2:A,A2:A >= C2, A2:A <= D2),MATCH(F1,FILTER(B2:B,A2:A >= C2, A2:A <= D2),0),1)
如果我为了可读性而用命名范围替换范围。
=INDEX(FILTER( dates, dates >= start_date, dates <= end_dates), MATCH(max_value, FILTER(values ,dates >= start_date, dates <= end_date),0),1)
索引解释
索引函数将返回一个数组中的值,该数组位于输入的行和列。索引(范围、行、列)。
过滤器 1 解释
第一个过滤函数将返回最小值和最大值之间的日期列表,我们将其用作索引函数中的范围。
比赛解释
match 函数返回它找到给定数组中给定值的第一个位置。我们给它的值是最大值字段的输出。所以它正在寻找给定数组 MATCH(value, array, is_sorted) 中的最大值。
过滤器 2 解释
第二个过滤器函数正在执行过滤器函数在最大值字段中所做的事情。它返回日期之间的值列表。当匹配在列表中搜索此值时,它将有一个索引,以提供给索引函数,以了解最大值的日期。
尾随值说明
索引函数末尾的1是可选的,它是在我们给它的数组的第一列中表示我们正在寻找的索引函数,但是因为我们给它一个一维数组并且我们是默认情况下已经在第一列中查找。这完全是可选的,只是纯粹基于偏好。
匹配公式末尾的0表示数据未排序。我们希望匹配的确切值。这不是 match 函数的默认行为。