VBA 在数组A中查找B间于的范围
时间: 2024-09-21 08:01:42 浏览: 34
EXCEL中数组函数运用范例.docx
VBA (Visual Basic for Applications) 中,如果你想在一个数组 A 中查找另一个数组 B 中的元素存在的范围,可以使用嵌套循环或者使用 `Find` 函数结合数组索引来实现。这里有一个简单的例子:
```vba
Sub FindRangeInArray()
Dim arrA() As Variant ' 定义数组 A
Dim arrB() As Variant ' 定义数组 B
Dim i As Long, j As Long, start As Long, end As Long
' 假设数组 A 和 B 已经初始化
arrA = Array(1, 5, 8, 9, 12, 15)
arrB = Array(5, 9, 12)
' 初始化查找范围
start = LBound(arrA) ' 获取数组 A 的下标最小值
end = UBound(arrA) + 1 ' 获取数组 A 的下标最大值加一
For Each b In arrB ' 遍历数组 B
Set found = Application.WorksheetFunction.Index(arrA, Application.WorksheetFunction.Match(b, arrA, 0)) ' 查找 b 在数组 A 中的位置
If Not IsError(found) Then ' 如果找到位置
Debug.Print "Element " & b & " is found at index " & found & " in array A"
' 更新查找范围,如果 b 在当前范围内未找到,则继续搜索剩余的范围
If found >= start And found <= end Then
start = found + 1 ' 移动到下一个位置开始查找
If found = end - 1 Then ' 如果已到达数组 A 尾部,结束查找
Exit For
End If
Else ' 否则跳过这个位置后的范围
start = found + 1
End If
Else ' 如果没找到,打印错误消息并从下一个元素开始查找
Debug.Print "Element " & b & " not found in array A"
End If
Next b
End Sub
```
在这个示例中,我们遍历数组 B 的每个元素,在数组 A 中查找其对应的元素,并记录其位置。如果没有找到,则会打印错误信息并移动到下一个可能的位置。
阅读全文