如何在一系列值中找到满足条件的最后一个值和第一个值?

如何在一系列值中找到满足条件的最后一个值和第一个值?

这是我的输入示例:

样本输入数据

然后,我在接下来的几天里遇到了午夜,我想自动实现这个结果:

在此处输入图片描述

换句话说:我在一列中有日期时间,我想找到一天午夜之前的最后一个日期时间和午夜之后的第一个日期时间。一天的日期时间可以没有、一个或多个。我还需要找到原始输入旁边一列中的值。

仅供参考:输入数据是我的煤气表的快照。值列中的数字是第一列中时间之前消耗的总立方米数。我需要找到这些边界值来计算一天的支出。我可以进行计算,但我无法在输入中找到这些值。

谢谢你!

答案1

您将需要使用该MATCH函数。它类似于HLOOKUPVLOOKUP但它返回一个索引 (1..n)而不是值(如果您不熟悉HLOOKUPVLOOKUP,您可能应该了解它们)。  MATCH(D2, $A$2:$A$14)将返回$A$2:$A$14小于或等于的最后一个值的索引D2;即,午夜时间之前的最后一个时间(的索引)D2。(这是 1 到 13 之间的整数形式,可能有点令人困惑,但这一切都很好。)为了避免冗余,使用“辅助列”很有用;所以我把 放入=MATCH(D2, $A$2:$A$14)I2然后输入以下公式:

  • E2  →  =INDEX($A$2:$B$14, $I2, 1)
  • F2  →  =INDEX($A$2:$B$14, $I2, 2)
  • G2  →  =INDEX($A$2:$B$14, $I2+1, 1)
  • H2  →  =INDEX($A$2:$B$14, $I2+1, 2)

我们用它来从列和INDEX中获取所需的值。AB

为了测试/演示目的,我稍微清理了您的输入:

                                                                A 列和 B 列

结果如下:

                                D 至 I 列

D这将导致 Column 中日期在之前的日期爆炸A2。要解决此问题,请添加另一个辅助列 ( J) 并更改GH

  • J2  →  =IFERROR(I2, 1) + 1
  • G2  →  =INDEX($A$2:$B$14, $J2, 1)
  • H2  →  =INDEX($A$2:$B$14, $J2, 2)

相关内容