Nested For / Do While / Пока не может достичь внешнего цикла в VBA / Macro - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь заполнить #N/A s в таблице значений путем усреднения значений в столбце значений. Логика заключается в том, что из местоположения #N/A используйте два указателя, чтобы найти следующие 2 не #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

Данные выглядят следующим образом: Tables view

O - смещение между 3-м столбцом слева и 3-м столбцом 3-й таблицы на изображении. Предполагается, что эти два цикла заполняют таблицу 3, используя значения в таблице 1. Я пробовал варианты Do While и While, но это тоже создает ту же проблему. Нет ошибки, о которой сообщается, просто нет выходных данных после первого столбца после запуска. Может ли кто-нибудь помочь мне понять, что здесь происходит или чего мне здесь не хватает. Пожалуйста, дайте мне знать, если мне нужно добавить описание проблемы.

Спасибо большое!

1 Ответ

0 голосов
/ 04 ноября 2018

Так как вам нужно определить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...