在 Excel 中对多行多列进行条件求和
问题由来
前几天,一名网友在微信群里求助,说有一个表格汇总数据不会算。经过两天努力,我帮他写了一个宏,顺利完成了任务。这个按字段汇总的宏我以后再说,今天只说验算的公式。
由于源数据比较多,出于谨慎,我需要将宏算出来的汇总表进行验算,并且最好是用一个单元格用单个公式完成对源数据的加和运算,因此想编写一个公式把源数据表所有符合条件的数据加和,再对汇总表加和,比较两个和是否一致。
源数据格式
源数据是由上百个结构相同的数据块组成的数据块纵列。下面展示连续的两个数据块:
每个数据块的格式如下:
- 总共有21行、13列;
- 第1行是标题,第20、21行是需要被忽略的数据,从第2行到第19行是需要汇总的数据;
- 所有数据块的第二列是纵向标题,每块都一样,都是18个同样次序排列的字母;
- 每块数据块的第一行是横向标题,此部分每个数据块都不一样,且数量有多有少;
- 由此可以看出,需要求和每个数据块从第2行、第3列开始到第19行、第13列的数据块内的数据;
为什么不能直接求和
也许有人会说,直接求 C:M 的和不就行了?还真不行。每个数据块的第20行是一个合计行,不能被计算进总数内,所以不能直接求和。而这一个合计行的业务逻辑比较奇怪,我没看出这一行数据和主体数据块的关系,至少不是主体数据块的纵向求和,否则可以用求 C:M 的和然后除以 2 的方式来求所需要的总和。
我的解决过程
用 SUMPRODUCT 函数的失败过程
这个公式需求看上去一点都不难,我不想用数组公式,用 SUM