EXCEL中MATCH函数lookup_array的排序问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL中MATCH函数lookup_array的排序问题相关的知识,希望对你有一定的参考价值。

MATCH函数,根据查找方式的不同,要求lookup_array按照升序,乱序,降序排列。但实际应用中,当查找方式为1时,未严格按照升序排列也能返回结果。求教知道的大大们

MATCH(lookup_value, lookup_array, [match_type]) MATCH 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。): lookup_value 必需。需要在 lookup_array 中查找的值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。 lookup_value 参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。 lookup_array 必需。要搜索的单元格区域。 match_type 可选。数字 -1、0 或 1。match_type 参数指定 Excel 如何在 lookup_array 中查找 lookup_value 的值。此参数的默认值为 1。 下表介绍该函数如何根据 match_type 参数的设置查找值。Match_type 行为 1 或省略 MATCH 函数会查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须按升序排列,例如:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。 0 MATCH 函数会查找等于 lookup_value 的第一个值。lookup_array 参数中的值可以按任何顺序排列。 -1 MATCH 函数会查找大于或等于 lookup_value 的最小值。lookup_array 参数中的值必须按降序排列,例如:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ... 等等。 本文仅探讨look_value值为数字时的情况 match_type共有3种 match_type=1时,match函数处理方法如下: 1、无论lookup_array顺序如何,均会被当做升序序列 2、从look_array的中间一位开始比较,若中间一位的数字小于等于待查找值,则继续向下查找。若中间一位的数字大于look_value,则从序列的第一位开始比较。比较规则见第3条。 例如,look_array有8个数字,则从第4个开始比较。 也就是说当第4位和第一位的数字都大于look_value时,就会返回错误。 中间一位的计算方法:look_array的个数除2,并四舍五入。 3、第n位的数字等于look_value时,若第n+1位的数字也等于look_value,则可继续向下比较;若第n+1位的数字大于或者小于look_value,则停止向下比较,返回n 第n位的数字小于look_value时,若第n+1位的数字小于等于look_value,则可继续向下比较,若第n+1位的数字大于ook_value,则停止向下比较,返回n 4、当序列中有#NA!、#value!、#DIV0!等错误数值时,这些数值不会去做比较,而是按顺序顺延到下一位进行比较。 例如,look_array中有8个数字,第4位是#DIV0!时,不会去比较,而是用5位去比较,依次类推。 利用以上原理,可以利用MATCH(,MID(A2,COLUMN(2:2),1)*0)的方法查找A2单元中字符串中连续数字的最后一个数字在字符串中的位置。但是当字符串是数字和字母无规律时就不能使用这个公式了 当match_type=0时,精确查找,自第一位开始查找,无视look_array的排序。仅返回待查找值在数组中最靠前位置 利用这个原理,可以利用MATCH(,MID(A2,COLUMN(2:2),1)*0,0)的方法查找A2单元中字符串中连续数字的第一个数字在字符串中的位置 当match_type=-1时,查找大于等于look_value的最小值,此时 1、无论look_array顺序如何,一律视为降序排列 2、从数组的第一位开始比较。若第一位小于look_value则直接返回错误,即使后边有大于look_value的数字。 3、第n位的数字等于look_value时,停止向下比较,返回n 第n位的数字大于look_value时,若第n+1位的数字小于或等于look_value,则停止比较,返回n或n+1,若第n+1位的数字大于look_value,则继续向下比较。 4、当序列中有#NA!、#value!、#DIV0!等错误数值时,这些数值不会去做比较,而是按顺序顺延到下一位进行比较。 参考技术A MATCH(lookup_value, lookup_array, [match_type])

MATCH 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):

lookup_value 必需。需要在 lookup_array 中查找的值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
lookup_value 参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。

lookup_array 必需。要搜索的单元格区域。
match_type 可选。数字 -1、0 或 1。match_type 参数指定 Excel 如何在 lookup_array 中查找 lookup_value 的值。此参数的默认值为 1。
下表介绍该函数如何根据 match_type 参数的设置查找值。Match_type 行为
1 或省略 MATCH 函数会查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须按升序排列,例如:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。
0 MATCH 函数会查找等于 lookup_value 的第一个值。lookup_array 参数中的值可以按任何顺序排列。
-1 MATCH 函数会查找大于或等于 lookup_value 的最小值。lookup_array 参数中的值必须按降序排列,例如:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ... 等等。

本文仅探讨look_value值为数字时的情况
match_type共有3种
match_type=1时,match函数处理方法如下:
1、无论lookup_array顺序如何,均会被当做升序序列
2、从look_array的中间一位开始比较,若中间一位的数字小于等于待查找值,则继续向下查找。若中间一位的数字大于look_value,则从序列的第一位开始比较。比较规则见第3条。
例如,look_array有8个数字,则从第4个开始比较。
也就是说当第4位和第一位的数字都大于look_value时,就会返回错误。
中间一位的计算方法:look_array的个数除2,并四舍五入。
3、第n位的数字等于look_value时,若第n+1位的数字也等于look_value,则可继续向下比较;若第n+1位的数字大于或者小于look_value,则停止向下比较,返回n
第n位的数字小于look_value时,若第n+1位的数字小于等于look_value,则可继续向下比较,若第n+1位的数字大于ook_value,则停止向下比较,返回n
4、当序列中有#NA!、#value!、#DIV0!等错误数值时,这些数值不会去做比较,而是按顺序顺延到下一位进行比较。
例如,look_array中有8个数字,第4位是#DIV0!时,不会去比较,而是用5位去比较,依次类推。
利用以上原理,可以利用MATCH(,MID(A2,COLUMN(2:2),1)*0)的方法查找A2单元中字符串中连续数字的最后一个数字在字符串中的位置。但是当字符串是数字和字母无规律时就不能使用这个公式了
当match_type=0时,精确查找,自第一位开始查找,无视look_array的排序。仅返回待查找值在数组中最靠前位置
利用这个原理,可以利用MATCH(,MID(A2,COLUMN(2:2),1)*0,0)的方法查找A2单元中字符串中连续数字的第一个数字在字符串中的位置

当match_type=-1时,查找大于等于look_value的最小值,此时
1、无论look_array顺序如何,一律视为降序排列
2、从数组的第一位开始比较。若第一位小于look_value则直接返回错误,即使后边有大于look_value的数字。
3、第n位的数字等于look_value时,停止向下比较,返回n
第n位的数字大于look_value时,若第n+1位的数字小于或等于look_value,则停止比较,返回n或n+1,若第n+1位的数字大于look_value,则继续向下比较。
4、当序列中有#NA!、#value!、#DIV0!等错误数值时,这些数值不会去做比较,而是按顺序顺延到下一位进行比较。本回答被提问者和网友采纳
参考技术B 所谓必须,是讲的要得到正确结果的话,你的序列【必须排序】,换句话说,Excel会假设你的数据是排序的,它会给你从序列开始的小于等于你的搜索值的结果,比如
match(3,1,2,4,7,3,9,3,1)得到的结果是2而不是5

EXCEL匹配结果match并跳转链接hyperlink

1,有时候想要搜索另一个表格中含有相同内容的项,然后跳转到搜索结果单元。

需要用到两个函数,MATCH和HYPERLINK

2,A表格如下

B表格如下

3,在B2单元格中输入函数

=HYPERLINK("[B.xlsx]Sheet1!A"&MATCH(A1,\'[B.xlsx]Sheet1\'!$A:$A,0),"detail")

关于hyperlink的用法可以百度,前一个参数是跳转的位置,后一个参数是单元格显示的内容,这里是detail,注意需要加引号。

前一个参数中嵌套了MATCH函数,第一个参数是匹配的单元格,第二个参数是匹配的区间,这里是文件B.xlsx中A列,第三个参数0是精确匹配。MATCH返回的是一个数,表示查找的位置。

所以用来当做hyperlink的参数时,需要在前面加上B的位置,需要注意A列表示用“!”

4,回车,另外需要B.xlsx文件打开的时候才能跳转链接。

5,如果是同一个文件中不同的sheet

=HYPERLINK("#Sheet2!A"&MATCH(A1,Sheet2!$A:$A,0),"detail")

Sheet2前要加“#”,表示链接自己表格。

 

以上是关于EXCEL中MATCH函数lookup_array的排序问题的主要内容,如果未能解决你的问题,请参考以下文章

如何搜索excel很多行的内容

pandas 中是不是有与 excel 中的 MATCH 函数等效的函数?

excel定位函数

[欢课] EXCEL怎样运用VLOOKUP函数,与INDEX-MATCH函数进行查找?

EXCEL 函数IF,CHOOSE,MATCH

EXCEL匹配结果match并跳转链接hyperlink