结合 LOOKUP 和 OFFSET
Combining LOOKUP and OFFSET
我想将我数据中的最后一个条目偏移一周。例如,我刚刚创建了这个示例数据:
day value
1 4
2 3
3 5
4 6
5 1
6 3
7 9
8 5
要查找数据集中的最后一个条目,我使用查找函数:
=LOOKUP(9.99E+307,b1:b10)
这将 return 值 5
。 (如果不熟悉符号,9.99E+307
是 Excel 中可以写的最大数字)。
然后我想将该值与上周的值进行比较,从而将最后一个条目偏移 7。我看到 OFFSET 要求:offset(reference,rows,cols) 但使用:
=OFFSET(LOOKUP(9.99E+307,b1:b10),-7,0)
似乎不起作用(它 return 是一个错误)。
可能是什么问题?
Reference
是OFFSET
函数引用了一个Range对象(一个单元格)。 Lookup
函数的结果是一个数值,在本例中为 5。您不能 OFFSET
一个数值。
您是否考虑过使用 VBA?
@user3561813 已经解释了原因,解决方案可能是:
=INDEX(B:B,MATCH(1E+100,B:B)-7)
MATCH finds the position (row number) of last entry in ColumnB, -7
steps up seven rows and INDEX 在 ColumnB 中查找该行的内容。
为什么不更改查找以查找列表中的最后一天?
此公式将 return 最后一天的值(上面数据中的 8):
=LOOKUP(9.99E+307,A1:A10)
然后您可以使用此公式 return 当天的最后一个值(上面数据中的 5):
=VLOOKUP(LOOKUP(9.99E+307,A1:A10),A1:B10,2,FALSE)
如果您想获得 7 天前的值,只需像这样从 LOOKUP 公式的结果中减去 7(将 return 4 - 上面数据中的第 1 天值):
=VLOOKUP(LOOKUP(9.99E+307,A1:A10)-7,A1:B10,2,FALSE)
您也可以使用单个 LOOKUP
函数,将 "return vector" 偏移 7 行,例如
=LOOKUP(9.99E+307,B8:B100,B1:B93)
我想将我数据中的最后一个条目偏移一周。例如,我刚刚创建了这个示例数据:
day value
1 4
2 3
3 5
4 6
5 1
6 3
7 9
8 5
要查找数据集中的最后一个条目,我使用查找函数:
=LOOKUP(9.99E+307,b1:b10)
这将 return 值 5
。 (如果不熟悉符号,9.99E+307
是 Excel 中可以写的最大数字)。
然后我想将该值与上周的值进行比较,从而将最后一个条目偏移 7。我看到 OFFSET 要求:offset(reference,rows,cols) 但使用:
=OFFSET(LOOKUP(9.99E+307,b1:b10),-7,0)
似乎不起作用(它 return 是一个错误)。
可能是什么问题?
Reference
是OFFSET
函数引用了一个Range对象(一个单元格)。 Lookup
函数的结果是一个数值,在本例中为 5。您不能 OFFSET
一个数值。
您是否考虑过使用 VBA?
@user3561813 已经解释了原因,解决方案可能是:
=INDEX(B:B,MATCH(1E+100,B:B)-7)
MATCH finds the position (row number) of last entry in ColumnB, -7
steps up seven rows and INDEX 在 ColumnB 中查找该行的内容。
为什么不更改查找以查找列表中的最后一天?
此公式将 return 最后一天的值(上面数据中的 8):
=LOOKUP(9.99E+307,A1:A10)
然后您可以使用此公式 return 当天的最后一个值(上面数据中的 5):
=VLOOKUP(LOOKUP(9.99E+307,A1:A10),A1:B10,2,FALSE)
如果您想获得 7 天前的值,只需像这样从 LOOKUP 公式的结果中减去 7(将 return 4 - 上面数据中的第 1 天值):
=VLOOKUP(LOOKUP(9.99E+307,A1:A10)-7,A1:B10,2,FALSE)
您也可以使用单个 LOOKUP
函数,将 "return vector" 偏移 7 行,例如
=LOOKUP(9.99E+307,B8:B100,B1:B93)