刚刚!Excel出现BUS,好多人都中枪,速看
最近2天,Excel频繁出现BUS,好多学员都中枪。
正常的操作界面。
有异常的操作界面,字体这一块的功能消失了。
解决方法,在Excel选项,自定义功能区,主选项卡,将字体添加到开始的主选项卡里面,就恢复正常。
没遇到最好,遇到的就按上面方法解决,就不再细说,下面聊多表嵌套INDIRECT。
这是VIP学员的一份表格,有很多张表,现在要将信息费、过路费、食宿等费用项目的合计引用过来。
分表总体还算标准,就是费用项目的顺序跟汇总表不一样,合计的行数也不确定。
昨天的文章是格式相同,而且只有一列,公式很简单。
=SUM(INDIRECT(A2&"!C:C"))
今天是格式不同,而且多列,就复杂一些。引用合计,合计是数字,可以用SUM函数家族,也可以用VLOOKUP函数家族。
1.SUM函数家族
现在先引用粤C88888这张表。费用项目都是第2行是固定的,而求和区域不固定,分表最多40多行,为了保证区域都包含进去,选到99行。分表本身有合计,求和以后再除以2才是对的。
=SUMPRODUCT((粤C88888!$I$2:$Z$2=B$1)*粤C88888!$I$3:$Z$99)/2
语法说明:
=SUMPRODUCT((条件区域=条件)*求和区域)
现在是多表,就得借助INDIRECT间接引用分表的区域。
=SUMPRODUCT((INDIRECT($A2&"!$H$2:$Z$2")=B$1)*INDIRECT($A2&"!$H$3:$Z$99"))/2
其实不要把INDIRECT想复杂了,你就把她当成第三方,只要通过她牵线,单元格的名称才能跟工作表的名称组合在一起,起到一个辅助作用而已。
2.VLOOKUP函数家族
依然先看一张表,合计在A列,至于第几行,这个对VLOOKUP没影响。而有影响的是费用项目,需要判断在第几列。
判断第几列,都是用MATCH,如果找不到就返回错误值。
=MATCH(B$1,粤C88888!$2:$2,0)
再结合VLOOKUP就可以找到对应值。
=VLOOKUP("合计",粤C88888!$A:$Z,MATCH(B$1,粤C88888!$2:$2,0),0)
有错误值,不方便后期运算,再嵌套IFERROR让错误值返回0。
=IFERROR(VLOOKUP("合计",粤C88888!$A:$Z,MATCH(B$1,粤C88888!$2:$2,0),0),0)
最后再嵌套INDIRECT就搞定。
=IFERROR(VLOOKUP("合计",INDIRECT($A2&"!$A:$Z"),MATCH(B$1,INDIRECT($A2&"!$2:$2"),0),0),0)
写公式就是这样,先每一小步写好,再慢慢组合起来,完成最终公式。
关于INDIRECT还有什么疑问?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)