gpt4 book ai didi

arrays - 如何在数组中搜索字符串

转载 作者:行者123 更新时间:2023-12-03 07:22:02 25 4
gpt4 key购买 nike

是否有一种简单的(单行)在 VBA 中搜索数组中的字符串?或者我需要循环遍历每个元素并将其与目标字符串进行比较?

编辑:它是一个一维数组。我只需要知道 IF 字符串位于数组中的某个位置。

IE:

names(JOHN, BOB, JAMES, PHLLIP)

我如何确定“JOHN”是否在数组中,它需要尽可能小,因为它将重复大约 5000 次,而且我不希望该函数减慢整个过程。

最佳答案

如果您想知道是否在数组中找到了该字符串,请尝试以下函数:

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function

SeanC指出,这必须是一个一维数组。

示例:

Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print IsInArray("ghi", arr)
End Sub

(以下代码根据 HansUp 的评论更新)

如果您想要数组中匹配元素的索引,请尝试以下操作:

Function IsInArray(stringToBeFound As String, arr As Variant) As Long
Dim i As Long
' default return value if value not found in array
IsInArray = -1

For i = LBound(arr) To UBound(arr)
If StrComp(stringToBeFound, arr(i), vbTextCompare) = 0 Then
IsInArray = i
Exit For
End If
Next i
End Function

这也假设一个一维数组。请记住 LBound 和 UBound 是从零开始的,因此索引 2 表示第三个元素,而不是第二个。

示例:

Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print (IsInArray("ghi", arr) > -1)
End Sub

如果您有特定的示例,请用它更新您的问题,否则示例代码可能不适用于您的情况。

关于arrays - 如何在数组中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com