2016-09-27 181 views
-1

注意:我将这个问题作为Excel和Google Docs,因为它们对于这样的简单问题有很多重叠。Excel - SUMIF和Weekday

我有两列数据。购买日期和购买量。

A    B 
11/23/2015  $59 
12/5/2015  $23.32 
1/21/2016  $12.09 
1/22/2016  $78.21 
1/22/2016  $5.88 
2/14/2016  $0.13 
...    ... 
(thousands of rows below this) 

我要总结

如果我使用SUMIF,我碰到这个问题花了星期一,星期二,星期三的金额,等:

=SUMIF(A:A, WEEKDAY(A:A), B:B) 
       ^WEEKDAY only takes in a single date value. 

做不是想要一个功能,我必须向下拖动。

我该如何做到这一点?

回答

0

试试这个query功能:

=QUERY({A:B},"select dayOfWeek(Col1), sum(Col2) where Col1 is not null group by dayOfWeek(Col1)") 

enter image description here

在这个公式我在公式中使用数组{A:B}和符号Col1, Col2...因为现在当你添加新列,公式不会失败。


而且similiar配方,采用sumif

={arrayformula(unique(weekday(A:A))),arrayformula(sumif(week‌​day(A:A),unique(week‌​day(A:A)),B:B))} 
+0

这很有趣,因为我以前使用过'QUERY'。这是否意味着'SUMIF'在这种情况下完全不起作用? – Hatefiend

+0

我认为,sumif是可能的,但它会更难使公式工作:您需要预定义周日,如:='{arrayformula(unique(weekday(A:A))),arrayformula(sumif(weekday( A:A),unique(weekday(A:A)),B:B))}' –

0

在Excel中,这个数组公式做到这一点。数组公式需要用Ctrl-Shift-Enter输入。

{=SUM(IF(WEEKDAY($A$2:$A$1000,1)=E2,$B$2:$B$1000,0))} 

这假设您的星期几的数量是E2。 Weekday函数中的第二个参数定义了您对Week的日期进行编号的方式。这里我使用了1,这意味着1 =星期日和7 =星期六

+0

或者你可以使用它,如果你不想使用arrayformula:= SUMPRODUCT( - (WEEKDAY($ A $ 2:$ A $ 1000,1)= E2),$ B $ 2:$ B $ 1000) –

+0

因此,在公式中放入'{''}'将其变成数组公式?这是如何运作的?什么功能授予它? – Hatefiend

+0

不,Excel会在输入公式后按Ctrl-Shift-Enter时自动执行此操作。如果您已经按Enter键,请按F2并按Ctrl-Shift-Enter。 – eshwar