我之前通过循环电子表格中的列来动态构建一维数组。因为我只想在这个数组中使用唯一值,所以我正在调用
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean.
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
在添加之前在每个元素上。到目前为止,非常好。
现在我需要存储2列的元素,所以我需要将其扩展为2D数组。我只需要原始数据元素是唯一的,但我的原始函数不接受2D数组。
有没有办法只搜索2D数组的一个“列”以查看字符串是否存在?
我想过几个解决方法,包括连接两个值并将它们保存在一维数组中,然后将它们解析出来等等,但我想知道“找到一个元素是否唯一”的方法是可能的。
答案 0 :(得分:0)
下面应该可行,只要你传递2个或更多列数组
Function IsInArray(stringToBeFound1 As String,stringToBeFound2 As String, arr As Variant) As Boolean
Found1 = 0
Found2 = 0
for x=0 to ubound(arr)
if stringToBeFound1 = arr(x,0) then
'found
Found1=1
end if
if stringToBeFound2 = arr(x,1) then
'found
Found2=1
end if
if Found1 =1 and Found2 =1 then IsInArray = TRUE
next
End Function
答案 1 :(得分:0)
这个简单的代码可以帮助您在1D或2D数组中找到字符串。
查看代码中编号列索引的编号方式,可能If i = ColumnToCheck Then
几乎不需要改进
Function IsInArray(stringToBeFound As String, arr As Variant, Optional ColumnToCheck As Integer = 1) As Boolean
For i = LBound(arr, 2) To UBound(arr, 2) 'columns
If i = ColumnToCheck Then
For j = LBound(arr, 1) To UBound(arr, 1) 'rows
If arr(j, ColumnToCheck) = stringToBeFound Then
IsInArray = True
Exit Function
End If
Next j
End If
Next i
End Function
答案 2 :(得分:0)
感谢Dean MacGregor和Jason_Walker的评论。我之前没有使用过字典,而且它们正是这里所要求的。以下两个问题让我得到了我需要去的地方。
如果你们中的任何一个想在这里发布一个单独的答案,我很高兴删除它并接受你的。