vue如何获取数组中的键值_VBA:获取指定数值在指定一维数组中的位置

    文章背景:在采用VBA抓取数据时,有时需要判断指定数值是否在一维数组中已存在;如果存在,则希望能够获取该数值在数组内的位置。

    在实践过程中发现,VBA的filter函数无法完全匹配指定数值;而借助Excel的match函数,可以实现完全匹配。接下来分别对Filter函数和Match函数进行介绍。

  1. Filter 函数

根据指定的筛选准则,传回包含字串阵列子集的以零为基础的阵列。

Filter ( sourcearray , match , [ include , [ compare ]])

  • sourcearray 必要项目。要搜寻的字串的一维阵列。

  • match             必要。要搜寻的字串。

  • include            选用。指出是否传回包含或排除match的子字串的布尔值。若includeTrueFilter则会传回包含match作为子字串的阵列子集。若includeFalseFilter则会传回不包含match作为子字串的阵列子集。

  • compare          选用。指出要使用的字串比较种类的数值。

    • compare引数可具有以下的值:

ee2064ba944d4657bff8c78137d9df9c.png

vbBinaryCompare选项,区分大小写;vbTextCompare选项,不区分大小写。默认采用的是vbBinaryCompare选项。

应用示例:

判断某字符串是否在一维数组内存在。

4340a67e5de690a884f049ab459e6e1e.png

    由上图可以看出,采用Filter函数匹配到的是包含A-1的所有元素。而在实际案例中,可能希望只获得完全匹配的元素。

  1. WorksheetFunction.Match 方法

    傳回項目在陣列中的相對位置,其符合指定順序中的指定值。

WorksheetFunction.Match(Arg1Arg2Arg3)

a2ea1d61486799dd4dde75112692e644.png

如果 match_type 是 0,相符項目會尋找第一個完全等於 lookup_value 的值。

如果 match_type 是 1,相符項目會找到小於或等於 lookup_value 的最大值。

如果省略 match_type,則會假設其值為 1。

应用示例:

Option ExplicitOption Base 1Sub test()    Dim data(4) As String, temp As String, flag As Integer        data(1) = "A-1"    data(2) = "A-2"    data(3) = "A-3"    data(4) = "A-11"        temp = "A-1"        On Error Resume Next    flag = WorksheetFunction.Match(temp, data, 0)        If Err.number = 0 Then            MsgBox flag        End IfEnd Sub

运行上述程序,得到flag的值为1。

参考资料:

[1] Filter 函数(https://ddz.red/m4Yby)

[2] WorksheetFunction.Match 方法(ttps://ddz.red/Vj4pR)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值