计算AVERAGE()时忽略某些值

问题描述 投票:0回答:1

我在公式的一部分中使用

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 的平均值)。

我试过像这样用

VLOOKUP
包围
IFERROR
s:

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

但我得到错误:

功能

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

如果我把整个东西分开,它会起作用。

google-sheets average
1个回答
3
投票

这是您可能需要的演示:

  • 数据在
    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))))

© www.soinside.com 2019 - 2024. All rights reserved.