小伙伴们好,今天来和大家分享一道关于按条件求和的题目。不过这道题目和我们平常所见的题目不太一样,一起来看看吧! 题目是这样子的: 题目要求汇总字符“文本”之间的数值。如果有多个“文本”,则取大值;如果只有一个“文本”,则汇总后面所有的数值。 朋友们有什么好办法吗? 这道题目还是有一定难度的。我们先取个巧。观察一下源数据,发现K列中的值除了第2行以外,都是后两个“文本”件的数值总和。第2行则是所有数据的总和。 在单元格M2中输入公式“=IFERROR(SUM(--OFFSET(A2,,LARGE(IF(A2:J2="文本",COLUMN($A:$J),0),2),,SUM(AGGREGATE(14,1,IF(A2:J2="文本",COLUMN($A:$J),0),{1,2})*{1,-1})-1)),SUM(A2:J2))”,三键回车并向下拖曳即可。 思路: IF(A2:J2="文本",COLUMN($A:$J),0)部分,返回“文本”所在列的列号,其余的返回0 LARGE(IF(A2:J2="文本",COLUMN($A:$J),0),2)部分,找到第2个大值,也就是求和区域的左端单元格。这个作为OFFSET函数的第2个参数 AGGREGATE(14,1,IF(A2:J2="文本",COLUMN($A:$J),0),{1,2})部分,利用AGGREGATE函数返回前两位的大值。它的第四参数{1,2}含义就是取最大值的前两位 AGGREGATE()*{1,-1}部分,求两个“文本”之间的间隔 SUM(AGGREGATE()*{1,-1})-1部分,就是需要求和的数值的数量,同时也是OFFSET函数的第5个参数,表示向右偏移多少列 --OFFSET返回需要求和的单元格区域,减负运算后将文本转变为错误值,SUM函数求和得到答案 最后,外侧嵌套IFERROR函数,解决第2行的求和问题
|