结合LOOKUP和OFFSET

时间:2015-02-04 19:39:14

标签: excel excel-formula offset lookup vlookup

我想将数据中的最后一个条目抵消一周。例如,我刚刚创建了这个示例数据:

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

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

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

将返回值5。 (如果表示法不熟悉,9.99E+307是可以用Excel编写的最大数字。)

我希望将此值与上周的值进行比较,从而将最后一个条目偏移7.我看到OFFSET要求: offset(reference,rows,cols)但使用:

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

似乎不起作用(它返回错误)。

可能是什么问题?

4 个答案:

答案 0 :(得分:2)

@ user3561813解释了原因,解决方案可能是:

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

MATCH找到ColumnB中最后一个条目的位置(行号),-7逐步增加七行,INDEX在ColumnB中找到该行的内容。

答案 1 :(得分:2)

您还可以使用单个LOOKUP函数,其中“返回向量”偏移7行,例如

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

答案 2 :(得分:1)

ReferenceOFFSET函数是指一个Range对象(一个单元格)。 Lookup函数的结果是一个数值,在这种情况下为5.您不能OFFSET一个数值。

你考虑过使用VBA吗?

答案 3 :(得分:1)

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

此公式将返回最后一天的值(上面数据中为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)