结合LOOKUP和OFFSET

我想在一周之内抵消我的数据中的最后一项。 例如,我刚刚创build了这个示例数据:

day value 1 4 2 3 3 5 4 6 5 1 6 3 7 9 8 5 

要查找数据集中的最后一个条目,我使用查找function:

  =LOOKUP(9.99E+307,b1:b10) 

这将返回值5 。 (如果符号不熟悉, 9.99E+307是Excel中可写入的最大数字)。

我想然后比较这个值与上周的值,从而偏移最后一个条目7.我看到OFFSET要求: 偏移(参考,行,列),但使用:

 =OFFSET(LOOKUP(9.99E+307,b1:b10),-7,0) 

似乎不工作(它返回一个错误)。

可能是什么问题呢?

为什么不改变查找来查找列表中的最后一天?

这个公式将返回最后一天的值(上面的数据为8):

 =LOOKUP(9.99E+307,A1:A10) 

然后,您可以使用此公式返回当天的最后一个值(上面的数据为5):

 =VLOOKUP(LOOKUP(9.99E+307,A1:A10),A1:B10,2,FALSE) 

如果您想要提前7天获得这个值,只需从LOOKUP公式的结果中减去7就可以了(在上面的数据中会返回4天1的值):

 =VLOOKUP(LOOKUP(9.99E+307,A1:A10)-7,A1:B10,2,FALSE) 

@ user3561813已经解释了为什么,一个解决scheme可能是:

 =INDEX(B:B,MATCH(1E+100,B:B)-7) 

MATCHfindColumnB中最后一个条目的位置(行号), -7 7递增-7个行, INDEXfindColumnB中该行的内容。

你也可以使用一个单一的LOOKUP函数,将“返回向量”偏移7行,例如

=LOOKUP(9.99E+307,B8:B100,B1:B93)

ReferenceOFFSET函数引用一个Range对象(一个单元格)。 Lookup函数的结果是一个数字值,在这个例子中是5.你不能OFFSET一个数字值。

你有没有考虑过使用VBA?