有网友求助:对区域中的多条件求和,自己所设的公式只有在所有条件都出现的情况下才出结果,如果有条件缺失,求和结果就会为 0,这该怎么纠错?
案例:下图 1 是某公司的销售记录,请以前三列为条件,设置求和公式。效果如下图 2 所示。
解决方案:1. 将数据表除标题外的所有区域都复制粘贴到另一个工作表。
2. 选中 A 列 --> 选择菜单栏的“数据”-->“删除重复值”
3. 在弹出的对话框中选择“以当前选定区域排序”--> 点击“删除重复项”
4. 点击“确定”
5. 点击“确定”
6. 重复同样的步骤给另外两列也去除重复值。
7. 回到源数据表的工作表,在下方复制粘贴相同的标题。
* 其实是非常不建议将两个表格上下或左右排布的,因为当数据行列变化时容易相互影响。此处为了便于大家查看,我才放在下面,实际工作中建议放在另一个工作表中。
8. 选中 A30 单元格 --> 选择菜单栏的“数据”-->“数据验证”-->“数据验证”
9. 在弹出的对话框的对话框中选择“设置”选项卡 --> 按以下方式设置 --> 点击“确定”:
允许:选择“序列”
来源:选择 A 列的数据区域
下拉菜单设置好了。
10. 用同样的方式设置另外两个下拉菜单。
11. 在 D30 单元格中输入以下公式:
=SUMIFS(D2:D25,A2:A25,"*"&A30,B2:B25,"*"&B30,C2:C25,"*"&C30)
公式释义:
sumifs 的用法老读者都不陌生,语法为 SUMIFS(求和区域, 条件区域1, 条件1, [条件区域2, 条件2], ...);对满足所有条件的区域求和;
为什么每个条件前都有一个 "*"& 呢?& 是个连接符,相当于在每个条件前加上通配符“*”,这样就能在下拉菜单中有空单元格的时候,条件会成为“*”,即整个区域都符合条件;如果没有“*”号,则该条件为空,那么最后 sumifs 判断某个条件不符合,从而最终结果会为 0。
现在就不怕了,有空单元格,也能多条件求和。
12. 这个求和公式还可以简化如下:
=DSUM(A1:D25,4,A29:C30)
公式释义:
DSUM 是个数据库函数,语法为 DSUM(数据库区域, 要计算的列, 包含指定条件的单元格);
第三个参数中的标题必须与数据库的标题一致
同样有空值也能计算出结果。除非条件有错结果才会为 0,比如“销售一部”中没有“王富贵”,如果同时选了这俩条件,求和结果就会为 0。