【问题标题】:Nested For/Do While/While not able to reach outer loop in VBA/Macro嵌套的 For/Do While/While 无法到达 VBA/Macro 中的外循环
【发布时间】:2025-11-28 04:25:01
【问题描述】:

我试图通过平均一列值中的值来将#N/As 填充到值表中。逻辑是从#N/A的位置,使用两个指针找到下一个特定值上下两个非#N/A值,然后将它们平均以填充#N/A。这是代码:-

Sub generate_NA_cutoffs()

Worksheets("Final cutoffs2").Activate

Dim i As Integer, j As Integer
Dim fwd As Integer, rev As Integer
Dim o As Integer

o = 15

For j = 3 To j = 6 'Go column-wise
    For i = 7 To i = 12 ' Go row-wise
        If i = 7 And Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
            Cells(i, j + o).Value = 0
        ElseIf i = 12 And Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
            Cells(i, j + o).Value = 1
        ElseIf Application.WorksheetFunction.IsNA(Cells(i, j).Value) = True Then
            fwd = i + 1
            rev = i - 1
            Do While Application.WorksheetFunction.IsNA(Cells(fwd, j).Value) = True
                fwd = fwd + 1
            Loop
            Do While Application.WorksheetFunction.IsNA(Cells(rev, j + o).Value) = True
                rev = rev - 1
            Loop
            'take the avg of 2 non NA values
            Cells(i, j + o).Value = (Cells(fwd, j).Value + Cells(rev, j + o).Value) * 0.5
        Else
            Cells(i, j + o).Value = Cells(i, j).Value
        End If

        'i = i + 1
    Next i

    'j = j + 1
Next j

End Sub

数据如下:-

O 是图像中第 3 个表中左起第 3 列与第 3 列之间的偏移量。这两个循环应该使用表 1 中的值填充表 3。我尝试了 Do While 和 While 的变体,但这也产生了同样的问题。一旦运行,没有报告错误,只是在第一列之外没有输出。 有人可以帮助我了解这里发生了什么或者我在这里缺少什么。 如果我需要为该问题添加更多描述,请告诉我。

非常感谢!

【问题讨论】:

  • 我可能完全错了。如果你改变会发生什么:For j = 3 To j = 6 -> For j = 3 To 6For i = 7 To i = 12 -> For i = 7 To 12
  • @wizhi 说的很对
  • 感谢@Wizhi 和@chris。奇迹般有效。感谢您的帮助 !请将此添加为答案,以便我可以关闭它。
  • 完美!!乐意效劳!我添加了一个更丰富的答案。保重:)!

标签: excel vba for-loop


【解决方案1】:

由于您需要使用开始和结束值定义For loop

For counter = start To end [Step increment]
   {...statements...}
Next [counter]

改变这个可以解决你的问题:

For j = 3 To j = 6 -> For j = 3 To 6

For i = 7 To i = 12 -> For i = 7 To 12

【讨论】:

    最近更新 更多