作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以循环遍历多维数组并将循环限制在第一维。
我已经制定了一个例子来说明我的观点:
我使用我在 excel 中的数据创建一个矩阵,我希望循环只打印与索引列对应的值。我尝试了不同的方法,但除了使用 if 条件退出 for 循环外,似乎没有任何效果。
Data table
这是原始代码:
Public matrix1() As Variant
Sub elements_in_loop()
Range("A3").Select
Range(Selection.End(xlToRight), Selection.End(xlDown)).Select
matrix1 = Selection
For Each Record In matrix1
Debug.Print Record
Next
End Sub
这是带有 if 条件的代码:
Public matrix1() As Variant
Sub elements_in_loop()
Range("A3").Select
Range(Selection.End(xlToRight), Selection.End(xlDown)).Select
matrix1 = Selection
For Each Record In matrix1
If Record <= UBound(matrix1) Then
Debug.Print Record
Else:
Exit For
End If
Next
End Sub
非常感谢任何关于如何在没有 if 条件的情况下执行此操作的建议。
Public matrix1() As Variant
Public matrix2() As Variant
Sub elements_in_loop()
Range("A3").Select
Range(Selection.End(xlToRight), Selection.End(xlDown)).Select
matrix1 = Selection
Range("G3").Select
Range(Selection.End(xlToRight), Selection.End(xlDown)).Select
matrix2 = Selection
For Each Record In matrix1
If Record <= UBound(matrix1) Then
For Each Record2 In matrix2
If Record2 <= UBound(matrix2) Then
If matrix1(Record, 4) = matrix2(Record2, 4) Then
Debug.Print "There's match"
Debug.Print Record
Else: End If
Else:
Exit For
End If
Next
Else:
Exit For
End If
Next
End Sub
最佳答案
只需使用常规 for 循环并循环第一个维度:
Sub elements_in_loop()
With ActiveSheet
matrix1 = .Range(.Range("A3").End(xlToRight), .Range("A3").End(xlDown))
matrix2 = Range(Range("G3").End(xlToRight), Range("G3").End(xlDown))
Dim i As Long
For i = LBound(matrix1, 1) To UBound(matrix1, 1)
Dim j As Long
For j = LBound(matrix2, 1) To UBound(matrix2, 1)
If matrix1(i, 4) = matrix2(j, 4) Then
Debug.Print "There's match"
Debug.Print matrix1(i, 4)
End If
Next j
Next i
End With
End Sub
关于arrays - 使用 For each Statement 循环遍历 VBA Excel 中的多维数组 - 仅第一维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66054046/
我是一名优秀的程序员,十分优秀!