设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel函数公式] sumif的高级用法:跨多表条件求和

[复制链接]
跳转到指定楼层
楼主
发表于 2015-7-20 15:38:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

                        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列,以免造成循环引用。
       

               
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-19 00:59 , Processed in 0.197063 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表