帮忙解释一下这个强悍的EXCEL函数公式啥意思?=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,ROW(A1)),Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,0)+1)讲的越细越好,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 12:28:53
![帮忙解释一下这个强悍的EXCEL函数公式啥意思?=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,ROW(A1)),Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,0)+1)讲的越细越好,](/uploads/image/z/2736007-7-7.jpg?t=%E5%B8%AE%E5%BF%99%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B%E8%BF%99%E4%B8%AA%E5%BC%BA%E6%82%8D%E7%9A%84EXCEL%E5%87%BD%E6%95%B0%E5%85%AC%E5%BC%8F%E5%95%A5%E6%84%8F%E6%80%9D%3F%3DINDEX%28Sheet1%21%24A%3A%24A%2CMATCH%28LARGE%28Sheet1%21%24B%242%3A%24B%24500%2B1%2FROW%28Sheet1%21%24B%242%3A%24B%24500%29%2A0.000001%2CROW%28A1%29%29%2CSheet1%21%24B%242%3A%24B%24500%2B1%2FROW%28Sheet1%21%24B%242%3A%24B%24500%29%2A0.000001%2C0%29%2B1%29%E8%AE%B2%E7%9A%84%E8%B6%8A%E7%BB%86%E8%B6%8A%E5%A5%BD%2C)
帮忙解释一下这个强悍的EXCEL函数公式啥意思?=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,ROW(A1)),Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,0)+1)讲的越细越好,
帮忙解释一下这个强悍的EXCEL函数公式啥意思?
=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,ROW(A1)),Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,0)+1)
讲的越细越好,
帮忙解释一下这个强悍的EXCEL函数公式啥意思?=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,ROW(A1)),Sheet1!$B$2:$B$500+1/ROW(Sheet1!$B$2:$B$500)*0.000001,0)+1)讲的越细越好,
公式的意思是,按B列数字大小,依次取A列的数据.
类似于large函数或者rank函数,不同的地方是,遇到相同值时,位置在前的排在前面.
这是一个数组公式,同时涉及的函数比较多,所以看着晕.
弄简单一点,取5行数据看看:
姓名\x05分数\x05名次\x05姓名
张三\x0520\x051\x05何七
李四\x0530\x052\x05赵六
王五\x0520\x053\x05李四
赵六\x0540\x054\x05张三
何七\x0550\x055\x05王五
(根据B列的成绩,得到前几名的姓名.张三和王五的分数一样,但是张三顺序靠前,所以名次排在前面.)
关键点在于:
为了取第N大值,同时避免重复值,所以这里要将b2:b6+1/row(2:6)*0.00001,意图是将行号硬拉扯进来参与排序,暗度陈仓.
把公式简化为:
=INDEX(Sheet1!$A:$A,MATCH(LARGE(Sheet1!$B$2:$B$6+1/ROW(Sheet1!$B$2:$B$6)*0.000001,ROW(A1)),Sheet1!$B$2:$B$6+1/ROW(Sheet1!$B$2:$B$6)*0.000001,0)+1)
分解如下:
第一步:
Sheet1!$B$2:$B$6+1/ROW(Sheet1!$B$2:$B$6)*0.000001:用1分别除以数据所在的将行号,再乘以一个微不足道的0.000001,再与分数相加.那么相同的分数,行号小的(在前面的)比行号大的(在后面的)就大那么一丁点.
第二步:
LARGE(...,row(a1))取得经过处理的第n大数据
第三步:
用MATCH函数在同样的数据中匹配他的位置,得到相对行号.
由于MATCH函数取得的是相对行号,比如50.0000001666667在{20.0000005;30.0000003333333;20.00000025;40.0000002;50.0000001666667}的位置是1,而数据是从B2起的,那么行号就要加1.
第四步:
用INDEX函数在A列取得相应行的数据.
……
公式以ctrl+shift+enter结束
补充:
换个思路也可以,道理类似,只是反过来
=INDEX(Sheet1!A:A,LARGE(Sheet1!$B$2:$B$500*100000,ROW(A1))-LARGE(Sheet1!$B$2:$B$500*100000-ROW(Sheet1!$B$2:$B$500),ROW(A1)))