Excel VBA вложенных циклических выводов реплицирует / неверные результаты - PullRequest
1 голос
/ 25 апреля 2019

У меня есть вложенный цикл for, который перебирает годы рождения (с 1919 по 2001) для двух разных людей.

Цель состоит в том, чтобы найти каждую возрастную комбинацию (основанную на датах рождения) для двух людей.

У меня есть проблема в том, что возраст человека во вложенной петле (петле)с переменной j), кажется, повторяется иногда и случайно без шаблона.

Например, каждая комбинация, когда человек N в возрасте 100-20 лет, работает нормально, без повторного значения возраста для человека J. Затем внезапно, когда человек N в возрасте 19 лет, человек J переходит в возрасте 100-50 лет.тогда ему будет дважды 49 лет, а затем возраст 47.

Ниже приведен мой код:

Sub ChangeDOB()
Application.ScreenUpdating = False
Dim n As Long
Dim i As Long
Dim j As Long
i = 2

For n = 1919 To 2001
    Sheets("Inputs").Range("E6").FormulaR1C1 = "1/15/" & n
    'j = 1919

    For j = 1919 To 2001
        Sheets("FF Tool Rates").Range("B" & i).Value = Sheets("Inputs").Range("E7").Value
        Sheets("Inputs").Range("E10").FormulaR1C1 = "1/15/" & j

        Sheets("FF Tool Rates").Range("C" & i).Value = Sheets("Inputs").Range("E11").Value
        Sheets("FF Tool Rates").Range("D" & i).Value = Sheets("Inputs").Range("S8").Value
        i = i + 1
    Next j
Next n
Application.ScreenUpdating = True

End Sub

Формула во входных данных! E7 рассчитывает возраст человека N.Формула во входах! E11 вычисляет возраст человека J.Формула в входных данных! S8 рассчитывает значение на основе возраста двух человек.Я надеюсь, что это добавляет ясности.

Ниже приведен пример ожидаемого результата:

Person N Age   Person J Age
90             90
90             89
90             88
90             87
90             86
90             85
90             84
90             83
90             82
90             81

Ниже приведен пример результата ошибки (см., Как возраст 85 появляется дважды):

Person N Age   Person J Age
33             90
33             89
33             88
33             87
33             85 <-should've been 86
33             85 
33             84
33             83
33             82
33             81

Первоначально я думал, что это был способ, которым я настроил Excel, который вычисляет возраст, основанный на датах рождения.Но если я вручную введу год в ячейках, Excel выдаст неповторяющиеся результаты.Таким образом, возраст 85 не появляется дважды при ручном вводе.

Кажется, что нет никакой картины относительно того, когда появляется эта ошибка, и если я перезапущу код, иногда не будет ошибки, а иногда ошибка появляется где-то еще.Вот почему мне было трудно отлаживать это.

Любые предложения или советы о том, где я мог что-то пропустить или если я испортил какую-то логику в своем коде?

Заранее спасибо!

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