excel学习库

excel表格_excel函数公式大全_execl从入门到精通

判断元素是否存在数组中 并确定位置

前景提要

数组的一些基础知识,我们也是上面也是陆续分享了6节了。相信大家对已数组应该已经有了一个大致的了解了

那么我们从这一节开始,进入针对数组的一些深入学习,主要是学习数组的运用
比方说在日常的工作中,我们那些场景可能会使用到这个数组呢?或者碰到什么样的场景,我们可以选择使用数组来完成呢?

场景模拟

这是我们今天的模拟数据,我们只是构造了一列非常简单的数据,刚好可以方便的装到一个数组中,然后我们要实现的场景是:

1.判断当前数组中是否还有某个元素

那个位置

可能大家会问,日常工作中哪些场景会用到这个功能呢?

如果判断当前列表中是否存在某个元素,我直接用Excel自带的查找功能就可以找到了,为什么还需要用到数组功能呢?

其实我们学习VBA要脱离Excel现有的框架,进入代码的世界中,比方说我们在之前学习过的工作表的合并的时候,合并工作表的时候,字段顺序不同的时候,要如何合并所有的字段?那个时候我们就用了这个数组的查找功能,所以学习一些数组的这些基本的功能,才能完成一些更加高难度的功能。

回到正题,我们直接看看代码

代码区

Sub test()

Dim arr

arr = Range(Cells(1, 1), Cells(26, 1))

nums = Application.Match("AQQ10", arr, 0)

If Err.Number<> 0 Then

MsgBox nums

Else

MsgBox "不存在“"

End If

End Sub

这一段代码也是非常的简单,我们的目的是测试下元素是否在列表中,如果 存在的话,就直接弹窗提示元素在数组中的位置,如果不存在的话,就直接返回不存在,我们来看看最终的效果

首先,我们来测试下AQQ10,看看他是否在数组中

从结果来看,数据是正确的的,AQQ10确实是在列表的第10个位置,所以返回的结果也正好是第10,结果没有错误

那么我们继续验证,加入数据不存在的情况下,我们验证下AQQ100是否在数组中呢?

最终的结果是不存在,而实际上,列表中确实也是不存在这样的结果,证明结果是正确的

那么我们来具体看看代码的解析

代码解析

我们之前学习过,在数组中也是可以使用函数的,数组和函数的搭配组合,可以解决不少的问题

在今天的代码中,如果你仔细观察代码,并且对于函数也有一定的了解的话,你就会发现,在今天的代码中也有个函数存在,他就是我们常用的Match函数,他能够帮助我们在数组中定位元素的位置,并且返回最终的数字。

具体如何使用呢?
Application.Match("AQQ10", arr, 0)

其实和本身函数的使用方法是一样的,这里可能会有小伙伴说,之前我们学习函数的时候,不是说在VBA使用函数是worksheetfunction+函数的方法嘛?为什么今天的代码中使用的application呢?其实这两种方法都是正确的,不过有时候使用worksheetfunction会报错,这个时候你直接替换成为application就可以了。

如果存在的话,那么最终结果就会返回,如果不存在,就会返回一个错值,但是我们怎么判断他最终是否存在呢?

这里我们看到这里使用了一个新的概念

Err.Number

它字面的意思就是返回的结果是是一个错值,如果最终返回的是一个正确的结果的话,那么这个肯定不会有报错的,反之如果是一个错值,也就是数组中不存在这么一个元素,那么nums这个变量肯定是不存在的,我们来实际操作看看,

可以看到,实际的结果nums并不是一个正常的数值,而是一个报错,所以

Err.Number

他捕捉的就是这个报错,一旦出现了这个报错,那么就证明数字中不存在这个结果,那么直接返回不存在就可以了,这就是我们今天代码的逻辑,那么你Get了吗?

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接