Excel 循环范围以根据范围中的值填充坐标

Excel 循环范围以根据范围中的值填充坐标,excel,vba,loops,Excel,Vba,Loops,我正在使用excel电子表格进行摄像机校准。在该电子表格中,可以选择使用78个可用目标中的14个。我已经开始编写代码,在使用的目标范围内循环,基于每个单元格中的值,它将使用x、y和z坐标值填充相邻单元格。最初只让循环遍历范围,并手动编写78条if语句来服务于每个目标。好的,我相信通过实现另一个for循环有更好的方法来实现这一点。我所拥有的一直在循环 我的代码尝试 Sub macro() Dim rng As range, cell As range Set rng = range("d2:d

我正在使用excel电子表格进行摄像机校准。在该电子表格中,可以选择使用78个可用目标中的14个。我已经开始编写代码,在使用的目标范围内循环,基于每个单元格中的值,它将使用x、y和z坐标值填充相邻单元格。最初只让循环遍历范围,并手动编写78条if语句来服务于每个目标。好的,我相信通过实现另一个for循环有更好的方法来实现这一点。我所拥有的一直在循环

我的代码尝试

Sub macro()

Dim rng As range, cell As range

Set rng = range("d2:d15")

' Target 1
For i = 1 To Rows.Count
    For j = 1 To 78
        If Cells(i, 4).Value = j Then
            Cells(i, 5) = Cells(26 + j, 2)
            Cells(i, 6) = Cells(26 + j, 3)
            Cells(i, 7) = Cells(26 + j, 4)
        End If
    Next j
Next i

End Sub

你的代码可以重构如下

Sub macro()
    Dim rng As range, cell As range

    Set rng = range("d2:d15")
    For Each cell in rng
        If cell>=1 And cell <=78 Then cell.Offset(,1).Resize(,3).Value = Cells(26 + j, 2).Resize(,3).Value
    Next
End Sub
Sub宏()
变暗rng作为范围,单元格作为范围
设置rng=范围(“d2:d15”)
对于rng中的每个单元

如果cell>=1,如果您共享数据,我们可以提供更好的解决方案。如何保持78个目标的值?它在数组中吗?它们是否保存在另一张工作表中?为什么要设置
rng
,但以后再也不使用它了?这不是无穷无尽的,如果您使用的是Excel 2007+,我只是在运行1048576,因为Rows.Count。目标坐标保存在同一张表中。x、 从b27、C27和D27开始的y和z。以下是从电子表格复制的示例。目标X Y Z 1 0.994076386 2.871819521 7.414613305 2 0.001286094 2.329521288 7.405560172 3 0.001367373 0.816107316 7.485133244 0.993239568 2.88548805 6.2347670626 5 0.001790363 2.355691937 6.328347983 6 0.580815367 2.38630878 4 4.521358343