Google sheets 如何将数组公式用于具有多个条件的SUMIFs
我已经做了几天了,在这件事上我需要一些帮助… 我试图使用数组公式总结两个给定日期内每个驾驶员的“负载列表”表中的DH和里程值 对于“完成驱动程序数据”表“D”列中的每个单元格,我都有以下Google sheets 如何将数组公式用于具有多个条件的SUMIFs,google-sheets,array-formulas,google-sheets-query,sumifs,google-query-language,Google Sheets,Array Formulas,Google Sheets Query,Sumifs,Google Query Language,我已经做了几天了,在这件事上我需要一些帮助… 我试图使用数组公式总结两个给定日期内每个驾驶员的“负载列表”表中的DH和里程值 对于“完成驱动程序数据”表“D”列中的每个单元格,我都有以下SUMIFS(),并且我得到了正确的结果。但我真的想把它转换成一个数组公式 为了便于阅读,我用参数分隔了公式 似乎除非使用regexmatch,否则SUMIFs是不受支持的,我也无法使用它。 我还尝试使用多个SUMIF来获得相同的结果。 我读到Query是一种方法,但我不知道如何使用Query。如果可能的话,我更
SUMIFS()
,并且我得到了正确的结果。但我真的想把它转换成一个数组公式
为了便于阅读,我用参数分隔了公式
似乎除非使用regexmatch,否则SUMIFs是不受支持的,我也无法使用它。
我还尝试使用多个SUMIF来获得相同的结果。
我读到Query
是一种方法,但我不知道如何使用Query。如果可能的话,我更喜欢使用数组
这里有一个链接,指向包含数据的工作表。
阵列用于C1:E1(以蓝色突出显示)
数组公式中的总和如下所示:
={"Revenue"; ARRAYFORMULA(IFNA(VLOOKUP(A2:A,
QUERY(QUERY('Load List'!G:O,
"select G,O
where H >= date '"&TEXT(O1, "yyyy-mm-dd")&"'
and H <= date '"&TEXT(P1, "yyyy-mm-dd")&"'", 0),
"select Col1,sum(Col2)
group by Col1
label sum(Col2)''", 0), 2, 0)))}
={“收入”矩阵公式(IFNA(VLOOKUP)(A2:A,
查询(查询('加载列表'!G:O,
“选择G,O
其中H>=日期“&”文本(O1,“yyyy-mm-dd”)&“
B1中的H应该有助于按驱动程序进行聚合。可以通过类似的方式按状态进行聚合:
=ARRAYFORMULA({"Count","DH","Miles","Revenue","$/mile","Weekly Avg.";IF(LEN(A2:A),VLOOKUP(A2:A,QUERY('Load List'!A:S,"select G,COUNT(G),SUM(M),SUM(N),SUM(O),AVG(R),SUM(O)/"&(Q1-P1)/7&" where H >= date '"&TEXT(P1,"yyyy-mm-dd")&"' and H<= date '"&TEXT(Q1,"yyyy-mm-dd")&"' group by G"),{2,3,4,5,6,7},0),)})
=ARRAYFORMULA({“Count”,“DH”,“Miles”,“Revenue”,“$/mile”,“Weekly Avg.”如果(LEN(A2:A),VLOOKUP(A2:A,QUERY('Load List'!A:S),选择G,Count(G),SUM(M),SUM(N),SUM(O),Avg(R),SUM(O)/“&(Q1-P1)/7&“其中H>=日期”&(P1,“yyyyyy-mm-dd”)&”和“注:
要使数组公式起作用,需要将它们应用于匹配大小的数组
对于日期在范围内(属于符合条件的每一行)的每个驾驶员,在列“DH”和“Miles”中确实会有匹配数量的单元格。从这些单元格中,您希望得到所有单元格的总和,因此您只需要一个结果
因此,类似于以下内容的方法将起作用:
=ArrayFormula(总和(“驾驶员条件匹配的DH-Range”+“驾驶员条件匹配的里程”)
问题是,你们需要找到所说的范围……你们可以使用查找函数或查询来做到这一点
但依我看,你的第一种方法更简单、更平淡、更具可读性、整体效果更好
我将此作为答案发布,因为它的评论太长了。
希望能有所帮助。您可以将您的SUMIFS/COUNTIFS标准组合成复合数据,直到您有一个排列列表,可以使用SUMIF/COUNTIF一次性过滤
例如,如果您需要A=“1”和B=“2”以及C=“3”的结果,请创建一个新列,将您的值合并在一起(A&B&C),然后运行一个SUMIF,查找“123”作为与该列的匹配项。这样做有效时,请内联该列公式
这里有一个例子:在AF中有两种不同的方法来执行sumifs()。您是否可以将工作表设置为可编辑,以便测试/演示?
={"Miles";ArrayFormula(sumif('Load List'!G2:G,A2:A,
'Load List'!M:M)+
sumif('Load List'!G2:G,A2:A,
'Load List'!N:N)+
sumif('Load List'!H2:H,N1,
'Load List'!N:N))}
={"Revenue"; ARRAYFORMULA(IFNA(VLOOKUP(A2:A,
QUERY(QUERY('Load List'!G:O,
"select G,O
where H >= date '"&TEXT(O1, "yyyy-mm-dd")&"'
and H <= date '"&TEXT(P1, "yyyy-mm-dd")&"'", 0),
"select Col1,sum(Col2)
group by Col1
label sum(Col2)''", 0), 2, 0)))}
=ARRAYFORMULA({"Count","DH","Miles","Revenue","$/mile","Weekly Avg.";IF(LEN(A2:A),VLOOKUP(A2:A,QUERY('Load List'!A:S,"select G,COUNT(G),SUM(M),SUM(N),SUM(O),AVG(R),SUM(O)/"&(Q1-P1)/7&" where H >= date '"&TEXT(P1,"yyyy-mm-dd")&"' and H<= date '"&TEXT(Q1,"yyyy-mm-dd")&"' group by G"),{2,3,4,5,6,7},0),)})