汇编语言 把最大值放入max 把最小值放入min_Excel求最大值地球人都知道,那要求出第2、第3、第N大值呢?...

只要稍稍懂点excel的人,都会轻松地求出最大值、最小值。

那要求出第2大值、第3大值……第N大值呢?

往下看,掌握了方法,排序又变得很简单了。

最大最小值

最大值:=max(B:B),最小值:=min(B:B)

其中B:B为最大最小值所在区域。

例:下面这份成绩表中求出最高分,最低分。

7864580e47e4790175fde1813348f0c0.gif

第N大值

在excel中,还有两个相关的冷门函数,large()和small(),仅从字面意思可以看出是求大值和小值,就是现在说的第N个大值或小值。

表达式:LARGE(Array,k)

说明:如果 Array 为空、 k <= 0 或 k 大于 Array 中的数据个数,则将返回数字错误值 #NUM!。

=large(B,B,N),=small(B,B,N)

意为在B列中求出第N个大值和第N个小值,如果N为2,拿本文中的成绩表来说,就是求出第2名和倒数第2名.

如果N为1时,=large(B:B,1)和=max(B:B)是同等效果。

求第2名的分数使用公式=large(B:B,2)

求第3名的分数使用公式=large(B:B,3)

……

第N小值的求法也是一样的。

理解了吗?

287a4286c18051fbb8039e8648d70648.gif

需要注意的是:如果选定的区域中有重复值,Large函数不会把它们排在同一位置,而是一个排在先另一个排在后。

下图中求第2、第3的成绩,在F3单元格输入公式=LARGE(C2:C5,2),返回96,如果把2改为3,回车后,发现同样返回96.

76edacc28c77e8681faec3ce0c5b58df.gif

这个公式中并没有把96都当作第 2 个最大值,而是把一个当作第 2个最大值,另一个当作第3 个最大值了。

实例演示

按成绩从大到小排序,

=LARGE(L$2:L$31,ROW(A1))。

de14ecde25c0fcc4718f7bfd7c8cf11f.gif

说明:

=LARGE(L2:L31,N),N值应是1、2、3……31

那如何获得变化的N值呢?用ROW函数,返回行号。

所以公式就可以写成:

=LARGE(L2:L31,ROW(A1)),因为A1单元格的行号就是1.

当拖动公式时,ROW(A1)变成ROW(A2),数值由1变成2,以此类推。

因为要求某一值在整个列中的排位,所以要保持这个单元格在拖动时不随变化,要绝对应用。

如此一来,公式就可以写成:

=LARGE(L$2:L$31,ROW(A1))。

【总结】

MAX仅求唯一大值,而LARGE可以求第N个大值。

您学会了吗?

本文由Office精彩办公原创,欢迎关注,带你一起长知识!

汇编语言是一种低级编程语言,它直接操作计算机硬件。下面是求最大值最小值和平均值的示例程序: ``` data segment arr db 30h, 25h, 40h, 10h, 35h ;数据数组 n dw 5 ;数据个数 max db 0 ;最大值 min db 0 ;最小值 sum dw 0 ;总和 avg dw 0 ;平均值 data ends code segment start: mov ax, data mov ds, ax ;求最大值 mov bl, arr mov bh, bl mov cx, n max_loop: cmp [bl], [bh] jg max_update inc bl jmp max_check_end max_update: mov bh, bl max_check_end: inc bl loop max_loop mov max, [bh] ;求最小值 mov bl, arr mov bh, bl mov cx, n min_loop: cmp [bl], [bh] jl min_update inc bl jmp min_check_end min_update: mov bh, bl min_check_end: inc bl loop min_loop mov min, [bh] ;求平均值 mov bx, arr mov cx, n sum_loop: add ax, [bx] inc bx loop sum_loop mov sum, ax mov ax, sum cwd ;扩展符号位,用于除法计算,将AX转换为DX:AX idiv n ;除以n,商在AX,余数在DX mov avg, ax ;显示结果 mov ah, 09h ;DOS功能号,显示字符串 lea dx, max_msg ;最大值字符串地址 int 21h ;调用DOS中断,显示字符串 mov al, max ;将最大值转换为ASCII码,方便显示 add al, 30h ;转换为ASCII码的方式是加上'0' mov ah, 0Eh ;DOS功能号,显示字符 int 10h ;调用BIOS中断,显示字符 lea dx, min_msg ;最小值字符串地址 int 21h ;调用DOS中断,显示字符串 mov al, min ;将最小值转换为ASCII码,方便显示 add al, 30h ;转换为ASCII码的方式是加上'0' mov ah, 0Eh ;DOS功能号,显示字符 int 10h ;调用BIOS中断,显示字符 lea dx, avg_msg ;平均值字符串地址 int 21h ;调用DOS中断,显示字符串 mov ax, avg ;将平均值转换为ASCII码,方便显示 call print_word ;调用子程序,显示16位数值 exit: mov ah, 4Ch ;DOS功能号,程序结束退 int 21h ;调用DOS中断,程序结束退 print_word proc near ;子程序,显示16位数值,入口参数:AX=数值(十进制) push ax ;保存寄存器内容 push dx mov bx, 10d ;除数为10d mov cx, 0 ;数字长度初始化为0 L1: xor dx, dx ;清零DX寄存器 div bx ;AX=AX/BX,商在AL,余数在AH push dx ;保存余数 inc cx ;数字长度+1 test ax, ax ;判断是否还能继续除法运算 jnz L1 L2: pop dx ;弹余数 add dl, '0' ;转换为ASCII码 mov ah, 02h ;DOS功能号,显示字符 int 21h ;调用DOS中断,显示字符 loop L2 pop dx ;恢复寄存器内容 pop ax ret print_word endp max_msg db 'The maximum value is: ' min_msg db 'The minimum value is: ' avg_msg db 'The average value is: $' code ends end start ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值