请教有关学生成绩样表中有关公式的的问题3

来源:百度知道 编辑:UC知道 时间:2024/09/21 13:19:33
学生成绩样表中"=SUMPRODUCT((--LEFT(班级)=ROW(A1))*语文)/SUMPRODUCT((--LEFT(班级)=ROW(A1))*(语文<>""))"这个公式是计算全校全体一年级学生语文的平均分。
SUMPRODUCT 在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。
LEFT 基于所指定的字符数返回文本字符串中的第一个或前几个字符。
LEFTB 基于所指定的字节数返回文本字符串中的第一个或前几个字符。此函数用于双字节字符。
1、(--LEFT(班级)=ROW(A1))中“--LEFT(班级)”前为什么要加两个短横,我试了一下好象去掉一个短横也不影响计算,这是什么原因?
2、为什么“SUMPRODUCT((--LEFT(班级)=ROW(A1))*语文) 能计算一年级所有参加语文考试的总分,而不是其他年级的语文总分?

你的班级是定义的名称(代表班级那一列的数据),班级的第一位能表示年级LEFT(班级)班级就是返回班级的第一位,照这题,应该是1,这个1是文本型的,前面的--是两个负号,可以通过这种方式把文本型的转为数值型的,用+0,*1等方式也可以,ROW(A1)返回的是A1的行号,1,如果只统计一班的,直接输入1就行了,不需要ROW函数(--LEFT(班级)=ROW(A1),即判断班级的第一位是不是等于1,如果等于1则返回TRUE,不等于返回FALSE,语文同班级,也是定义的名称,用刚才判断出的真假值和语文相乘,TRUE作1,FALSE作0,就可让1年级的返回本身的语文成绩,不是1年级的返回0,最后SUMPRODUCT函数求和
多条件求和用SUMPRODUCT的原因主要是支持数组计算,如果用SUM函数的话,公式就要用CTRL+SHIFT+ENTER结束

楼上基本上给予解答了.你把分给他吧.

补充说明:
LEFT不带第二个参数是取字符串左边第一个字符.其结果为"字符"型数据,用"--"强制转换为"数值"型数据.比如"--1",可以这样理解,前一个为减号,后一个为负号,负负得正,结果还是1,不过由"文本"变成了"数值".

因为"班级"的第一位数字表示年级,所以用ROW(A1)等于1表示一年级.
这里使用ROW函数表示"年级",主要是方便公式向下复制.复制到下一行时变为ROW(A2)等于2,求得二级年的数据.以此类推.