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