如何使用带有文本条件的月份和年份的 SUMIF,
经验!
我想求和
A B C
Date Item Code QTY
01-12-16 86000 50
15-12-16 86021 20
01-02-17 86022 100
01-03-17 86023 50
现在我只想要 12 月 16 日的 86000 的总和结果在外部表上。
假设您的数据如下图所示,然后在
Cell G2
中输入以下公式
=SUMPRODUCT((MONTH($A$2:$A$5)=12)*(YEAR($A$2:$A$5)=2016)*($B$2:$B$5=86000)*(C2:C5))
或
=SUMPRODUCT((MONTH($A$2:$A$5)=F2)*(YEAR($A$2:$A$5)=F3)*($B$2:$B$5=F4)*(C2:C5))
在这里,
SUMIFS
可能没用,你可以使用SUM
作为
=SUM(IF(MONTH($A$2:$A$5)=F2,IF(YEAR($A$2:$A$5)=F3,IF($B$2:$B$5=F4,$C$2:$C$5))))
这是一个数组公式,因此请按 Ctrl+Shift+Enter 提交。
编辑:
如果您必须使用月份名称而不是数字,即如果您使用
Dec
而不是 12
,则使用以下公式
=SUMPRODUCT((MONTH($A$2:$A$5)=MONTH(F2&"1"))*(YEAR($A$2:$A$5)=F3)*($B$2:$B$5=F4)*(C2:C5))
终于找到解决方案了。
A B C
1....... 日期............ 商品代码.......数量
2
3................. 01-12-16.................. 86000......................... 50
4......... 16-12-15......... 86021......... 20
5......... 01-02-17......... 86022......... 100
6................. 01-03-17.................. 86023......................... 50
如果我想要 2016 年 12 月的 86000 总和,我将这个公式放入单元格中,我的问题就解决了
=SUMPRODUCT((月($A$3:$A$6)=12)(年($A$3:$A$6)=2016)($C$3:$C$6)*($B$3:$ B$6=86000))
使用表格范围,可以帮助您在整个工作簿的每张工作表中进行寻址。
假设日期字段数据类型为文本:
=SUMIFS(Table1[QTY], Table1[Date], "01-12-16", Table1[Item Code], "86000")
如果日期以 12-16 结尾:
=SUMIFS(Table1[QTY], RIGHT(Table1[Date], 5) , "12-16", Table1[Item Code], "86000")
您可以使用
SUMPRODUCT
:
从上面的屏幕截图中,我添加了两行额外的数据来向您展示这是如何工作的。我所做的是将所有日期转换为该月的第一个日期。这是假设您在
cell E2
上得到结果的公式。
=SUMPRODUCT($C$2:$C$7,--(DATE(YEAR($A$2:$A$7),MONTH($A$2:$A$7),1)=DATE(2016,12,1)),--($B$2:$B$7=86000))
您还可以将条件移至另一个表中,以便将来更轻松地更改它们。
我被困在试图解决问题......
=SUMIFS(TableColumnOfValues, Text(TableColumnOfDates, "mmm"), "= & $CellWith3DigitMonthInIt)
或
=SUMIFS(TableColumnOfValues, 月(TableColumnOfDates), "= & $CellWithMonthNumberInIt)
SumProduct 完美地解决了这个问题。不过我会选择...
=SUMPRODUCT($C$2:$C$5*(TEXT($A$2:$A$5,"yyyy-mm")=TEXT($F$2, "yyyy-mm"))*($B$2:$B$5 = $F$4))
在G2。或者作为 G3 中的替代方案...
=SUMPRODUCT($C$2:$C$5*(TEXT($A$2:$A$5,"yyyy-mm")=TEXT($F$3, "yyyy-mm"))*($B$2:$B$5 = $F$4))
使用 TEXT 来格式化源数据和要匹配的 DATE 的 DATE 意味着要查找的 DATE 的格式并不重要
伊恩
附注我还将我的数据放在 ListObject 表中或给出我的列名称。讲道结束。