一览众山小棒棒哒
发表于 2021-11-15 13:32:50
请发附件。
房产柴先生
发表于 2021-11-21 07:53:34
同样的问题,不用辅助列,怎么用公式解决。
张毓明
发表于 2021-11-24 09:49:22
CLEAN(MIDB(A3,{1,5},{4,5})) 的计算结果就是两个班级,所以 I 列也把中间的条件换成这个公式就可以了
让我变成星星守护你
发表于 2021-11-27 21:30:20
我不明白为什么这么一改计算的就是两个班的,我还以为要四9+四10呢,能解释一下吗,MIDB(A3,{1,5},{4,5}
冰语星梦
发表于 2021-11-29 20:55:06
你既然会LEFT和RIGHT,那MID应该也会,而MIDB跟MID差不多,只是把一个中文当两个字符。中间的{1,5}是数组,意思是分别从第1个和第5个字符开始提取,第1个不用多说,至于第5个,因为中文占2个,数字占1个或2个,换行符占1个。当数字占1个时,第5个字符就是第二个班级的第一个中文字符,当数字占2个时,第5个字符就是换行符。也就是说第二个提取位置要么是换行符,要么是第二个班级的中文。
再来看后面的数组{4,5},跟前面的{1,5}是对应的,意思是从第1个字符开始提取4个字符,从第5个字符开始提取5个字符。这样就可以保证把两个班级的字符都提取到,只是可能会把换行符也一起提取了。这时候用CLEAN函数清楚换行符,就可以得到两个班级的名称了。
说了这么多,如果看不懂就慢慢学习数组的相关内容吧。
鲍祝
发表于 2021-11-29 22:01:28
非常感谢你,就是不明白这个数组的原理,多谢你了。
谭班长
发表于 2021-12-6 12:52:12
这么说可能会简单些:
假设A1单元格的内容是:ABCDEFG
现在用 LEFT 函数从里面提取内容,LEFT(A1,2)提取前2个字符 "AB",LEFT(A1,5) 提取前5个字符 "ABCDE"
现在用数组的方式来提取:LEFT(A1,{2,5}),意思是同时进行提取,那结果就是{"AB","ABCDE"}
如果把这个结果作为 COUNTIF 函数的条件,COUNTIF(A1,LEFT(A1,{2,5})&"*"),那结果就是{1,1}
因为这时候的结果还是数组,可以在外面用 SUM 函数进行求和 SUM(COUNTIF(A1,LEFT(A1,{2,5})&"*"))
最后得到的结果就是 2。要注意的是,数组公式一般输入完后不能直接按 ENTER 结束,而是要按 CTRL + SHIFT +ENTER 三键结束。但有些函数本身就支持数组,直接按 ENTER 结束也可以得到正确结果。这方面就不多说了,感兴趣的话可以去找些数组的资料学学
姜俊宇
发表于 2021-12-13 03:09:39
恩恩,第一次发的已经明白,谢谢你了。有没有好的保护公式的办法,防止误修改,除了审阅里面保护工作表之外的方法,要能看不见公式,但是,其他单元格可以编辑。
所有人都是你爷
发表于 2021-12-13 11:16:05
首先,两个班的总平均分不能直接用两个班各自的平均分相加再除以2,之前的公式逻辑是错的。
可以参考以下公式:
D3单元格公式:
=IFERROR(IF(FIND(CHAR(10),A3),
COUNTIFS(成绩!$C$3:$C$9994,LEFT(A3,FIND(CHAR(10),A3)-1),成绩!$H$3:$H$9994,">=0")+
COUNTIFS(成绩!$C$3:$C$9994,MID(A3,FIND(CHAR(10),A3)+1,3),成绩!$H$3:$H$9994,">=0")),
COUNTIFS(成绩!$C$3:$C$9994,A3,成绩!$H$3:$H$9994,">=0"))
E3单元格公式:
=IFERROR(IF(FIND(CHAR(10),A3),
SUMIF(成绩!$C$3:$C$9994,TRIM(LEFT(SUBSTITUTE(A3,CHAR(10),REPT(" ",2)),3)),成绩!$H$3:$H$9994)
+SUMIF(成绩!$C$3:$C$9994,TRIM(RIGHT(SUBSTITUTE(A3,CHAR(10),REPT(" ",2)),3)),成绩!$H$3:$H$9994)),
SUMIF(成绩!$C$3:$C$9994,A3,成绩!$H$3:$H$9994))/D3
幻特龙
发表于 2021-12-17 09:05:51
首先,两个班的总平均分不能直接用两个班各自的平均分相加再除以2,之前的公式逻辑是错的。
可以参考以下公式:
D3单元格公式:
=IFERROR(IF(FIND(CHAR(10),A3),
COUNTIFS(成绩!$C$3:$C$9994,LEFT(A3,FIND(CHAR(10),A3)-1),成绩!$H$3:$H$9994,">=0")+
COUNTIFS(成绩!$C$3:$C$9994,MID(A3,FIND(CHAR(10),A3)+1,3),成绩!$H$3:$H$9994,">=0")),
COUNTIFS(成绩!$C$3:$C$9994,A3,成绩!$H$3:$H$9994,">=0"))
E3单元格公式:
=IFERROR(IF(FIND(CHAR(10),A3),
SUMIF(成绩!$C$3:$C$9994,TRIM(LEFT(SUBSTITUTE(A3,CHAR(10),REPT(" ",2)),3)),成绩!$H$3:$H$9994)
+SUMIF(成绩!$C$3:$C$9994,TRIM(RIGHT(SUBSTITUTE(A3,CHAR(10),REPT(" ",2)),3)),成绩!$H$3:$H$9994)),
SUMIF(成绩!$C$3:$C$9994,A3,成绩!$H$3:$H$9994))/D3