分享

这才是Sumif函数的最高级用法

 木子六一 2015-07-19

Sumif函数是条件求和函数,一般我们只是用于单表求和,今天我们学习sumif的高级用法,跨多表条件求和。


一、工作表名规则(序号+字符)


【例】如下图所示,有1日~5日5个列相同、行数不同的明细表,要求汇总出每个产品的销量之和。

分表:

汇总表


分析:

如果只有一个表,我们只需要用sumif函数直接求和:

=SUMIF('1日'!B:B,合计!A2,'1日'!C:C)

对于多个表,除了用sumif()+sumif+sumif()...外,Sumif函数支持多表同时求和,但必须用indirect函数生成对多个表的引用,即:

INDIRECT(ROW($1:$5)&'日!B:B')

INDIRECT(ROW($1:$5)&'日!C:C')

(回复 Indirect 可以查看该函数的用法)


用sumif组合起来,即:

=SUMIF(INDIRECT(ROW($1:$5)&'日!b:b'),A2,INDIRECT(ROW($1:$5)&'日!c:c'))

而上述的公式返回的每个表的求和结果,是一组数,最后还需要用sumrpoduct函数进行求和,即:

=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$5)&'日!b:b'),A2,INDIRECT(ROW($1:$5)&'日!c:c')))


二、工作表名称不规则


工作表名称常常是不规则的,如下图所示



分析:

首先我们需要用宏表函数取得表名

公式 - 名称管理器 - 新建名称 - 在新建名称中输入名称“sh”,然后“引用位置”框中输入公式:


=MID(GET.WORKBOOK(1),FIND(']',GET.WORKBOOK(1))+1,99)&T(now())

公式说明:

GET.WORKBOOK(1)是宏表函数,当参数是1时,可以获取当前工作簿中所有工作表名称,由于名称中带有工作簿名称,所以用FIND+MID截取只含工作表名称的字符串。&T(now())的作用是让公式自动更新。



然后,我们就可以在公式中用 sh&'! 替换原来的ROW($1:$5)&'日!,

最终公式为:

=SUMPRODUCT((SUMIF(INDIRECT(sh&'!b:b'),D2,INDIRECT(sh&'!c:c'))))


由于sh取得的名称中包括“合计”,所以汇总表在制作时,要避开B列和C列,以免造成循环引用。




书也买了一大堆,没心思看。教程也下载了好多,越看越迷糊。excel到底该怎么学?其实,通过视频学习才是最好的学习途径,点左下角'阅读原文' 查看兰色幻想+小妖录制的超全的290集excel视频教程。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多