Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets Google sheets Average函数计算不正确_Google Sheets_Filter_Average_Google Sheets Formula_Array Formulas - Fatal编程技术网

Google sheets Google sheets Average函数计算不正确

Google sheets Google sheets Average函数计算不正确,google-sheets,filter,average,google-sheets-formula,array-formulas,Google Sheets,Filter,Average,Google Sheets Formula,Array Formulas,我正在使用谷歌表格创建一个财务记录 我想做的是创建一个公式,其中考虑了我的数据范围中的3列。这三列是日期、单词和数字 公式的第一部分将检查日期是否为当前月份(不是30天内,而是当前月份)。第二部分将检查单词“Yes”是否出现在第二列中,如果这两个是真的,则对所有其他也完全为真的行取第3列的平均值 C列是日期 W列是单词 Y列是数字 我尝试了很多方法,第一种是使用平均IF函数,在这里我使用过滤器检查日期,然后在标准中使用Yes这个词。这导致了一个数字,尽管它是不正确的,因为公式首先收集了是和否的序

我正在使用谷歌表格创建一个财务记录

我想做的是创建一个公式,其中考虑了我的数据范围中的3列。这三列是日期、单词和数字

公式的第一部分将检查日期是否为当前月份(不是30天内,而是当前月份)。第二部分将检查单词“Yes”是否出现在第二列中,如果这两个是真的,则对所有其他也完全为真的行取第3列的平均值

C列是日期 W列是单词 Y列是数字

我尝试了很多方法,第一种是使用平均IF函数,在这里我使用过滤器检查日期,然后在标准中使用Yes这个词。这导致了一个数字,尽管它是不正确的,因为公式首先收集了是和否的序列,一旦它有了序列,它就应用到第三列,但它是从我最早的条目(不是我当前的月份)开始的。下面是代码

所以我尝试了另一种方法。它使用了一个查询函数。尽管我一直在研究如何将一个日期的月份与当前的今日()月份进行比较。这不会给出任何结果,即使当前月份为8,日期月份也为8。我也在下面输入了这个代码

=AVERAGEIF(filter(W8:W800,month(C8:C800)=month(today())),"Yes",Y8:Y800)

=query(query(A8:Z800,"select month(C)+1, W, Y where W ='Yes'",0),"select Col1, Col3, Col4 where Col1 ='"&month(today())&"'",1)


背景中解释的结果

您的嵌套有点不正确。如果您使用的是
过滤器
,请使用普通的
平均值
,而不是
平均值
,并确保您抓住了要聚合的正确列。最后,别忘了用
IFERROR
包装来处理您的空案例

=IFERROR(AVERAGE(FILTER(Y8:Y800, MONTH(C8:C800)=MONTH(TODAY()), W8:W800="Yes")), 0)

如果您有多个标准,则需要使用
AVERAGEIFS
而不是
AVERAGEIF

=ARRAYFORMULA(AVERAGEIFS(C2:C, B2:B, "yes", MONTH(A2:A), MONTH(TODAY())))

哦,美女,我也尝试过平均值,但我的思路太短(很晚了),以至于我无法把它串在一起,并想“不,这不可能”。我需要集中精力思考它所扮演的角色,但这很好。谢谢凯特:)@bart.s
IFERROR
返回第一个参数的结果,除非该结果是错误的。如果是,则返回第二个参数(在本例中为0)。