【发布时间】:2023-03-18 20:37:01
【问题描述】:
我正在使用 Excel 电子表格进行相机校准。在此电子表格中,可以选择使用 78 个可用目标中的 14 个。我已经开始编写循环使用目标范围的代码,根据每个单元格中的值,它将使用 x、y 和 z 坐标值填充相邻单元格。最初只使 for 循环遍历范围并手动编写 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
【问题讨论】:
-
如果您共享您的数据,我们可以提供更好的解决方案。你如何保持 78 个目标的值?它在数组内吗?它们是否保存在另一个工作表中?你为什么设置
rng,但以后再也不用了? -
它不是无止境的,如果你使用 Excel 2007+,我只运行 1048576,因为 Rows.Count。
-
目标坐标保存在同一张表中。 x、y 和 z 从 b27、c 27 和 d 27 开始。这是从电子表格复制的示例。目标X Y Z 1 0.994076386 2.871819521 7.414613305 0.001286094 2 2.329521288 7.405560172 0.001367373 3 0.816107316 7.485133244 0.993239568 4 6.234767026 2.88548805 5 0.001790363 2.355691937 6.328347983 0.580815367 6 2.386308878 4.521358343 跨度>