vba-match和错误处理
本文是讲match函数的踩坑点,大家注意避坑。
1、MATCH函数只在一维数组或者二维一列数组中才有效。如图:
A2为二维数组,A3为一维数组, A4为二维一列数组。B运算结果为Error 2042,C运算结果为1,D运算结果为1。
需要注意的是A0是一维数组,A2是二维数组。
如果不借助单元格,要生成二维数组只有两种方法,一种是上图所示,通过两次transpose转化。
另一种是定义时就规定为二维数组,如图:
2、MATCH 函数找不到会报错影响程序运行,怎么处理?
方法一:在判断前加一句On Error Resume Next
如图,程序顺利运行
方法二:用ISERROR函数判断使程序顺利运行
3、日期元素即使在数组中存在,在MATCH函数中也会找不到
如图,运算结果显B为Error 2042。处理方法:将日期元素转化为字符串后,再用MATCH函数进行查找。
4、以数组查找数组中,一维函数与二维一列函数可以互换,不会影响结果。
如图,在Z1与Z3结果相同,Z2与Z4结果相同。