这在C ++,Python,R等中是微不足道的。但Excel正在努力。在网络上一遍又一遍地有相同的简单例子。我找不到任何解决这个SUMIF / COUNTIF应用的方法。
我有一个项目列表,每个项目都有一个类别位标记:
...... A ............. B .... C
1 |Item ........... # ... Flag
2 | Apples ....... 20 ... 1
3 | Oranges .... 30 ... 3
4 | Lemon ........40 ... 7
5 | School Bus .. 5 ... 4
这里,使用EXCEL功能BITAND:
-- BITAND( < flag >, 1) is non-zero for fruit,
-- BITAND( < flag >, 2) is non-zero for citrus,
-- BITAND( < flag >, 4) is non-zero for yellow,
我需要做类似的事情:
Total Citrus = SUMIF(C2:C5, BITAND(C2:C5, 2) > 0, B2:B5)
这不起作用,因为条件(第二个参数)只能在简单条件中使用对列表元素的隐式引用(例如“&gt; 5”)
变体可能如下所示:
Total Citrus = SUM( IF(BITAND(C2:C5, 2) > 0, B2:B5) )
这几乎可以工作,但条件只针对单元格C2进行测试,然后对总列表进行求和。
当然我可以使用三个不同的列并用1和0填充它,但是根据我的实际情况进行缩放会很糟糕。
答案 0 :(得分:2)
您已使用BITAND function²创建了数组公式¹。这些需要使用 Ctrl + Shift + Enter↵完成,而不是简单地Enter↵。正确输入后,Excel将在公式周围添加大括号(例如 {和} )。你不要自己打字。
在E7中,
=SUM(IF(SIGN(BITAND($C$2:$C$5, VLOOKUP(D7, $G$2:$H$5, 2, FALSE))), $B$2:$B$5))
正确输入后,请根据需要填写。
¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。
² {2013}引入了BITAND function²。它在早期版本中不可用。