【问题标题】:loop through range to populate coordinates based upon value in range循环遍历范围以根据范围内的值填充坐标
【发布时间】: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 跨度>

标签: excel vba loops


【解决方案1】:

你的代码可以重构如下

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多