计算AVERAGE()时忽略某些值

时间:2018-08-21 14:03:44

标签: google-sheets average

我在公式的一部分中使用AVERAGE(),其中VLOOKUP是另一张纸上的值。

我想介绍查找不匹配的情况。我不想将其设置为0,我只想在平均计算中忽略它。

我已经考虑了好几天,无法提出一些优雅的东西:

AVERAGE(
  VLOOKUP(TEXT(today()-2,"yyyy-MM-dd"),indirect("marketHistory"&A6&"!$A$1:$F"),6,false),
  VLOOKUP(TEXT(today()-3,"yyyy-MM-dd"),indirect("marketHistory"&A6&"!$A$1:$F"),6,false),
  VLOOKUP(TEXT(today()-4,"yyyy-MM-dd"),indirect("marketHistory"&A6&"!$A$1:$F"),6,false)
)

编辑:

数据VLOOKUP正在搜索:

2018-08-18  47999.96    47999.96    47999.96    9   28076
2018-08-19  47799.96    47799.96    47799.96    5   17915
2018-08-20  40002.78    40002.78    40002.78    3   853

平均最后一列,查找2018-08-19、2018-08-18和2018-08-17。预期:22995,5(2018-08-19和2018-08-18的平均值)。

我试图用VLOOKUPIFERROR括起来,如下:

=average(IFERROR(VLOOKUP(J18,I19:J20,2,false),"error"),J13,K13)

但是我得到了错误:

  

函数AVERAGE参数1需要数字值。但是“错误”是文本,不能强制为数字。

如果我把整个东西都拆开了,那就行了。

1 个答案:

答案 0 :(得分:1)

以下是您可能需要的演示:

enter image description here

  • A:B中的数据
  • 您在D2:D中的输入-vlookup的值列表

关键是要从具有值的列中过滤列表。 filter + regex处理任务。

公式: =FILTER(B:B,REGEXMATCH(TO_TEXT(A:A),TEXTJOIN("|",1,D2:D)))给出了对选定日期进行数学运算的值列表:

28076
17915

然后对返回值进行任何操作:

=AVERAGE(FILTER(B:B,REGEXMATCH(TO_TEXT(A:A),TEXTJOIN("|",1,D2:D))))