Excel,根据条件求MAX、MIN、AVERAGE

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:16:11
这个问题我之前在这里问过http://zhidao.baidu.com/question/41926696.html,但解决问题后才发现没有得到彻底解决!!
工作薄“年级排名”中B列是学生选择的科目:物理、化学或生物,P列是考试分数,现在如何在另一个工作薄中求某门科目分数最大值、最小值平均分?(如“化学”的最大值:128,最小值:120,平均值:124)谢谢!
B P
1 化学 128
2 生物 130
3 化学 120
4 物理 111
5 生物 139
6 物理 120

问题补充:在baidu知道里有很多相似的问题,我也详细看了。关于求最大吃,答案有几种
1.错误 =MAX((年级排名!B1:B6="物理")*(年级排名!P1:P6))!经过试验,计算结果有误
2.错误 =MAX(IF(年级排名!B1:B6="物理",年级排名!P1:P6))--错误
3.正确 =SUMPRODUCT(MAX((年级排名!B1:B6="物理")*(年级排名!P1:P6)))★★
4.错误 =LARGE(IF(年级排名!B1:B6="生物",年级排名!P1:P6),1)

最大值问题基本已经解决,如果有好的办法也请赐教。关键是最小值、平均分
按照 方括号 的方法,如果在单元格中直接输入LARGE公式,通过CTRL+SHIFT+ENTER查看结果是正确的,但我是在EXCEL中用VB编程,通过程序给单元格指定LARGE公式,不能用CTRL+SHIFT+ENTER来执行公式,结果就不对。下面的两个公式也是编程指定,结果正确!
★最大值:=SUMPRODUCT(MAX((年级排名!B1:B6="物理")*(年级排名!P1:P6)))。求最小值修改为:=SUMPR

一、你所列的公式,1、2、4都是正确的,而且都是数组公式。
数组公式的输入方法是:首先激活编辑栏,然后Ctrl+Shift+Enter,当看见公式外围有大括号后,表示输入成功。
即显示为{=MAX((年级排名!B1:B6="物理")*(年级排名!P1:P6))}
注意,手工输入大括号是无用的,只能同时打Ctrl+Shift+Enter三个键。
二、将原公式2、4改为求最小值是极其容易的,公式1因最小值为0,所以不正确。
=MIN(IF(年级排名!B1:B6="物理",年级排名!P1:P6))
=SMALL(IF(年级排名!B1:B6="生物",年级排名!P1:P6),1)
这两个公式其实是一样的,只不过用了不同的函数。
注意,也是数组公式。
三、再改造成平均公式也是极其容易的。
=AVERAGE(IF(年级排名!B1:B6="物理",年级排名!P1:P6))
即换个函数就成了。
呵呵,还是数组公式。

你一开始没有说用VBA,就以为你是用普通公式。
一、关于VBA调用数组公式,因我没有用过,所以只能随便说说,正确不正确靠你自己验证了。
VBA调用的方法应该是:
先将数组公式以字符串形式赋给一个变量,然后
Application.Evaluate(变更名)
好象也可直接将公式作为字符串形式放在括号内。
二、如果是普通公式,则我这里做了一个取最小值的,你再看看:
=SUMPRODUCT(SMALL((年级排名!B1:B6="物理")*(年级排名!P1:P6),COUNT(年级排名!P1:P6)-COUNTIF(年级排名!B1:B6,"=物理")+1))
三、平均值公式你已经有了,我就不再列了。

方括号的解答很详细。

另外向楼主推荐使用分类汇总、数据透视表都操作。同样可以求解最大最小平均值。

使用EXCEL自带的帮助文件

两个问题的错误是一样的,你编辑的这都是数组公式,数组