Vlookup可以在Excel中返回公式吗?

我想在Excel中使用VLOOKUP函数来返回一个公式。 关于使用VLOOKUP我在这里发现了很多,但是有一个稍微不同的问题。

我正在试图获得A列中可以find的特定date(C列)之前一周的平均气温(来自B列)。

更简单地说:

如果单元格 C2中的date存在于 A中, 则从列 B中的范围返回平均值

到目前为止,这是我得到的最接近的(感谢SO上的其他QA):

 =VLOOKUP(C2, A1:B660, AVERAGE(B124:B130), FALSE) 

但是,使用AVERAGE函数代替列号(通常是使用的参数)似乎不起作用。

我附上了一个非常简化的数据图片:

数据

如果VLOOKUP是错误的函数来处理这将是一个更好的方法? 我在Mac上运行Excel 15.32。

编辑:

虚拟数据: https : //www.dropbox.com/s/rblk943k2zf71tw/dummy%20data.xlsx? dl = 0

关于什么:

 =AVERAGE(OFFSET($B:$B,MATCH($C2,$A:$A,0)-1,0,-7)) 

这假定第1行中的标题。

  • 从C2中的条目中find列A中匹配的date
  • 创build一个列B值的数组,从那一点算起一周
  • 平均数组。

例如,您可以填写D列,并根据需要进行调整。

OFFSET函数的一个问题是它是易失性的,所以如果在工作表上有任何改变,所有的公式都会重新计算。

以下至less在更高版本的Excel中应该是非易失性的:

 =AVERAGE((INDEX($A:$B,MATCH($C2,$A:$A)-6,2,1):INDEX($A:$B,MATCH($C2,$A:$A,0),2))) 

我将留给你来处理2-6行检查date的错误。

使用INDEX作为MATCH的单元格引用来定位主date,并使用该位置以及该位置减去6的范围。

 =AVERAGE(INDEX(B:B, MATCH(C2, A:A, 0)-6):INDEX(B:B, MATCH(C2, A:A, 0))) 

在这里输入图像描述

我觉得你要找的是这样的:

 =IF(COUNTIF(A1:A660,C2)=0,0,AVERAGE(B124:B130)) 

这表示如果在A1:B660中找不到C2,则返回0,否则返回平均值(B124:B130)。

我会推荐一个不同的方法。 仍然使用VLOOKUP ,我会去下面。 然而,将会有一个更容易/更优雅的方式来完成这个工作。

  • 如果find,使用VLOOKUP返回一个值。 真的,你不关心它返回的价值。

    =VLOOKUP(C2,A:B,2,FALSE)

  • 裹在IFNA处理date未find。 在这里,我已经得到它返回-1。

    =IFNA(VLOOKUP(C2,A:B,2,FALSE),-1)

  • 如果VLOOKUP返回一些东西,请使用IF语句计算出平均值,如果没有find,则执行其他操作。
    =IF(IFNA(VLOOKUP(C2,A:B,2,FALSE),-1)<>-1,AVERAGE(B124:B130),"do something else")