ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8139|回复: 16

[分享] rank,frequency,index,sumproduct等在成绩按条件排名中应用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-28 21:40 | 显示全部楼层 |阅读模式
如何在年级成绩统计中自动生成班级排名?
看了2楼和3楼的公式以及7楼的附件,在此总结.以后复习.

[ 本帖最后由 lrlxxqxa 于 2010-3-28 22:00 编辑 ]

积累3.28-2.rar

7.07 KB, 下载次数: 350

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 21:42 | 显示全部楼层
RANK
[原创]RANK的三维引用和COUNTIF的四维引用

rank怎么对不连续区域排名
请参阅

返回一个数字在数字列表中的排位。数字的排位是其大小与列表中其他值的比值(如果列表已排过序,则数字的排位就是它当前的位置)。

语法

RANK(number,ref,order)

Number    为需要找到排位的数字。

Ref    为数字列表数组或对数字列表的引用。Ref 中的非数值型参数将被忽略。

Order    为一数字,指明排位的方式。

如果 order 为 0(零)或省略,Microsoft Excel 对数字的排位是基于 ref 为按照降序排列的列表。
如果 order 不为零,Microsoft Excel 对数字的排位是基于 ref 为按照升序排列的列表。
说明

函数 RANK 对重复数的排位相同。但重复数的存在将影响后续数值的排位。例如,在一列按升序排列的整数中,如果整数 10 出现两次,其排位为 5,则 11 的排位为 7(没有排位为 6 的数值)。

由于某些原因,用户可能使用考虑重复数字的排位定义。在前面的示例中,用户可能要将整数 10 的排位改为 5.5。这可通过将下列修正因素添加到按排位返回的值来实现。该修正因素对于按照升序计算排位(顺序 = 非零值)或按照降序计算排位(顺序 = 0 或被忽略)的情况都是正确的。

重复数排位的修正因素 =[COUNT(ref) + 1 – RANK(number, ref, 0) – RANK(number, ref, 1)]/2。

在下列示例中,RANK(A2,A1:A5,1) 等于 3。修正因素是 (5 + 1 – 2 – 3)/2 = 0.5,考虑重复数排位的修改排位是 3 + 0.5 = 3.5。如果数字仅在 ref 出现一次,由于不必调整 RANK,因此修正因素为 0。
这个函数不能对不连续的区域进行计算。原来我做过一个宏,在VBA中把分散的单元格弄到一个区域变量里,总算做到了。现在给你一个方法,你可以把要排名的分散的单元格,命名为一个名称,就是插入--名称--自定义,上面写名称,下面按CTRL键点选单元格就可以了。然后再插入RANK函数,区域参数部分写上刚命名的名称就可以了
其实要是仅用一次,二楼的方法也就行了,但是要是用的比较多,或是单元格分布比较有规律,用定义名称的方法就比较好用,公式也显得简单。

示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
4
5
6
A
数据
7
3.5
3.5
1
2
公式 说明(结果)
=RANK(A3,A2:A6,1) 3.5 在上表中的排位 (3)
=RANK(A2,A2:A6,1) 7 在上表中的排位 (5)

[ 本帖最后由 lrlxxqxa 于 2010-3-28 22:11 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 21:47 | 显示全部楼层
FREQUENCY
解读FREQUENCY函数
请参阅

以一列垂直数组返回某个区域中数据的频率分布。例如,使用函数 FREQUENCY 可以计算在给定的分数范围内测验分数的个数。由于函数 FREQUENCY 返回一个数组,所以必须以数组公式的形式输入。

语法

FREQUENCY(data_array,bins_array)

Data_array    为一数组或对一组数值的引用,用来计算频率。如果 data_array 中不包含任何数值,函数 FREQUENCY 返回零数组。

Bins_array    为间隔的数组或对间隔的引用,该间隔用于对 data_array 中的数值进行分组。如果 bins_array 中不包含任何数值,函数 FREQUENCY 返回 data_array 中元素的个数。

说明

在选定相邻单元格区域(该区域用于显示返回的分布结果)后,函数 FREQUENCY 应以数组公式的形式输入。
返回的数组中的元素个数比 bins_array(数组)中的元素个数多 1。返回的数组中所多出来的元素表示超出最高间隔的数值个数。例如,如果要计算输入到三个单元格中的三个数值区间(间隔),请一定在四个单元格中输入 FREQUENCY 函数计算的结果。多出来的单元格将返回 data_array 中大于第三个间隔值的数值个数。
函数 FREQUENCY 将忽略空白单元格和文本。
对于返回结果为数组的公式,必须以数组公式的形式输入。
示例

本示例假设所有测验分数都为整数。

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
4
5
6
7
8
9
10
A B
分数 分段点
79 70
85 79
78 89
85  
50  
81  
95  
88  
97  
公式 说明(结果)
=FREQUENCY(A2:A10,B2:B5) 分数小于等于 70 的个数 (1)
成绩介于 71-79 之间的个数 (2)
成绩介于 80-89 之间的个数 (4)
成绩大于等于 90 的个数 (2)


注释  示例中的公式必须以数组公式的形式输入。将示例复制到空白工作表之后,请选中从公式单元格开始的单元格区域 A13:A16。按 F2,再按 Ctrl+Shift+Enter。如果公式未以数组公式的形式输入,则返回的结果为 1。

[ 本帖最后由 lrlxxqxa 于 2010-3-28 21:58 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-28 22:04 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 22:12 | 显示全部楼层
SUMPRODUCT
[原创]关于用SUMPRODUCT取代SUM数组公式的想法
SUMPRODUCT添加并列条件
sumproduct求和的“ ”空格问题
用SUMPRODUCT进行多条件求和时导致EXCEL无响应
请参阅

在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。

语法

SUMPRODUCT(array1,array2,array3, ...)

Array1, array2, array3, ... 为 2 到 30 个数组,其相应元素需要进行相乘并求和。

说明

数组参数必须具有相同的维数,否则,函数 SUMPRODUCT 将返回错误值 #VALUE!。
函数 SUMPRODUCT 将非数值型的数组元素作为 0 处理。
示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
4
A B C D
Array 1 Array 1 Array 2 Array 2
3 4 2 7
8 6 6 7
1 9 5 3
公式 说明(结果)
=SUMPRODUCT(A2:B4, C2:D4) 两个数组的所有元素对应相乘,然后把乘积相加,即 3*2 + 4*7 + 8*6 + 6*7 + 1*5 + 9*3。(156)


说明

上例所返回的乘积之和,与以数组形式输入的公式 SUM(A2:B4*C2:D4) 的计算结果相同。使用数组公式可以为类似于 SUMPRODUCT 函数的计算提供更通用的解法。例如,使用公式 =SUM(A2:B4^2) 并按 Ctrl+Shift+Enter 可以计算 A2:B4 中所有元素的平方和。

[ 本帖最后由 lrlxxqxa 于 2010-3-28 22:23 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-28 22:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢楼主的分享.

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 22:52 | 显示全部楼层
INDEX
[原创]函数INDEX数组应用精解
史上最牛查找函数组合 Index + Match 一看就会! [老搭档 新感觉]

[分享]”多行多列”转换为“多行单列”的解题思路
关于在index函数中动态应用表名的问题!
原创]★借助辅助列用函数筛选数据★
请参阅

返回表或区域中的值或值的引用。函数 INDEX() 有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。

INDEX(array,row_num,column_num) 返回数组中指定单元格或单元格数组的数值。

INDEX(reference,row_num,column_num,area_num) 返回引用中指定单元格区域的引用。

语法 1(数组)
返回列表或数组中的元素值,此元素由行序号和列序号的索引值给定。

INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。

语法 1

数组形式

INDEX(array,row_num,column_num)

Array    为单元格区域或数组常量。

如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选。

如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。

Row_num    数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。

Column_num    数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。

说明

如果同时使用 row_num 和 column_num,函数 INDEX 返回 row_num 和 column_num 交叉处的单元格的数值。
如果将 row_num 或 column_num 设置为 0,函数 INDEX 则分别返回整个列或行的数组数值。若要使用以数组形式返回的值,请将 INDEX 函数以数组公式形式输入,对于行以水平单元格区域的形式输入,对于列以垂直单元格区域的形式输入。若要输入数组公式,请按 Ctrl+Shift+Enter。
Row_num 和 column_num 必须指向 array 中的某一单元格;否则,函数 INDEX 返回错误值 #REF!。

示例 1

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
A B
数据 数据
苹果 柠檬
香蕉 梨
公式 说明(结果)
=INDEX(A2:B3,2,2) 返回单元格区域的第二行和第二列交叉处的值(梨)
=INDEX(A2:B3,2,1) 返回单元格区域的第二行和第一列交叉处的值(香蕉)


示例 2

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
A B
公式 说明(结果)
=INDEX({1,2;3,4},0,2) 返回数组常量中第一行、第二列的值 (2)
返回数组常量中第二行、第二列的值 (4)


注释  示例中的公式必须以数组公式的形式输入。在将示例复制到空白工作表中后,请选中以公式单元格开始的单元格区域 A2:A3,按 F2,再按 Ctrl+Shift+Enter。如果公式不是以数组公式的形式输入,则返回单个结果值 2。

语法 2(引用)
返回指定的行与列交叉处的单元格引用。如果引用由不连续的选定区域组成,可以选择某一连续区域。

函数 INDEX 有两种语法形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。

语法 2

引用形式

INDEX(reference,row_num,column_num,area_num)

Reference    对一个或多个单元格区域的引用。

如果为引用输入一个不连续的区域,必须用括号括起来。

如果引用中的每个区域只包含一行或一列,则相应的参数 row_num 或 column_num 分别为可选项。例如,对于单行的引用,可以使用函数 INDEX(reference,,column_num)。

Row_num    引用中某行的行序号,函数从该行返回一个引用。

Column_num    引用中某列的列序号,函数从该列返回一个引用。

Area_num    选择引用中的一个区域,并返回该区域中 row_num 和 column_num 的交叉区域。选中或输入的第一个区域序号为 1,第二个为 2,以此类推。如果省略 area_num,函数 INDEX 使用区域 1。

例如,如果引用描述的单元格为 (A1:B4,D1:E4,G1:H4),则 area_num 1 为区域 A1:B4,area_num 2 为区域 D1:E4,而 area_num 3 为区域 G1:H4。

说明

在通过 reference 和 area_num 选择了特定的区域后,row_num 和 column_num 将进一步选择指定的单元格:row_num 1 为区域的首行,column_num 1 为首列,以此类推。函数 INDEX 返回的引用即为 row_num 和 column_num 的交叉区域。
如果将 row_num 或 column_num 设置为 0,函数 INDEX 分别返回对整个列或行的引用。

Row_num、column_num 和 area_num 必须指向 reference 中的单元格;否则,函数 INDEX 返回错误值 #REF!。如果省略 row_num 和 column_num,函数 INDEX 返回由 area_num 所指定的区域。
函数 INDEX 的结果为一个引用,且在其他公式中也被解释为引用。根据公式的需要,函数 INDEX 的返回值可以作为引用或是数值。例如,公式 CELL("width",INDEX(A1:B2,1,2)) 等价于公式 CELL("width",B1)。CELL 函数将函数 INDEX 的返回值作为单元格引用。而在另一方面,公式 2*INDEX(A1:B2,1,2) 将函数 INDEX 的返回值解释为 B1 单元格中的数字。
示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
4
5
6
7
8
9
10
11
A B C
水果 价格 数量
苹果 .69 40
香蕉 .34 38
柠檬 .55 15
柑桔 .25 25
梨 .59 40
   
杏 2.80 10
腰果 3.55 16
花生 1.25 20
核桃 1.75 12
公式 说明(结果)
=INDEX(A2:C6,2,3) 返回区域 A2:C6 中第二行和第三列交叉处的单元格 C3 的引用。(38)
=INDEX((A1:C6,A8:C11),2,2,2) 返回第二个区域 A8:C11 中第二行和第二列交叉处的单元格 B9 的引用。(3.55)
=SUM(INDEX(A1:C11,0,3,1)) 返回区域 A1:C11 中第一个区域的第三列的和,即单元格区域 C1:C6 的和。(216)
=SUM(B2:INDEX(A2:C6,5,2)) 返回以单元格 B2 开始到单元格区域 A2:A6 中第五行和第二列交叉处结束的单元格区域的和,即单元格区域 B2:B6 的和。(2.42)

[ 本帖最后由 lrlxxqxa 于 2010-3-28 23:02 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 23:07 | 显示全部楼层
LARGE函数
EXCEL的LARGE函数问题  
用途:
  返回数据集中的第K个最大值。
  语法:
  LARGE(array,k)
  参数:
  array 为需要找到第 k 个最大值的数组或数字型数据区域。
  k 为返回的数据在数组或数据区域里的位置(从大到小)。
  说明:
  LARGE函数计算最大值时忽略逻辑值TRUE和FALSE以及文本型数字。
如果数组为空,函数 LARGE 返回错误值 #NUM!。
如果 k ≤ 0 或 k 大于数据点的个数,函数 LARGE 返回错误值 #NUM!。
如果区域中数据点的个数为 n,则函数 LARGE(array,1) 返回最大值,函数 LARGE(array,n) 返回最小值。


  实例:
  如果A1=24,A2=5,A3=7,A4=15,A5=0,A6=35,A7=2,A8=5,则公式"=LARGE(A1:A8,3)"返回15,即数组中第3个大的数字是15(A4)。

[ 本帖最后由 lrlxxqxa 于 2010-3-28 23:10 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-28 23:12 | 显示全部楼层
COUNTIF
对countif()函数的理解
经典详细介绍函数COUNTIF与sumi的用法

多行多列筛选不重复值的新探讨
[分享][原创]提取不重复值的函数方法集粹


请参阅

计算区域中满足给定条件的单元格的个数。

语法

COUNTIF(range,criteria)

Range    为需要计算其中满足条件的单元格数目的单元格区域。

Criteria    为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。例如,条件可以表示为 32、"32"、">32" 或 "apples"。

说明

Microsoft Excel 提供其他函数,可用来基于条件分析数据。例如,若要计算基于一个文本字符串或某范围内的一个数值的总和,可使用 SUMIF 工作表函数。若要使公式返回两个基于条件的值之一,例如某指定销售量的销售红利,可使用 IF 工作表函数。

示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
   
1
2
3
4
5
A B
数据 数据
苹果 32
柑桔 54
桃 75
苹果 86
公式 说明(结果)
=COUNTIF(A2:A5,"apples") 计算第一列中苹果所在单元格的个数 (2)
=COUNTIF(B2:B5,">55") 计算第二列中值大于 55 的单元格个数 (2)

[ 本帖最后由 lrlxxqxa 于 2010-3-28 23:19 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-5-25 23:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢,学习了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 02:17 , Processed in 0.057503 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表