Как перебрать каждый другой столбец с помощью VBA - PullRequest
0 голосов
/ 29 января 2019

Итак, я пытаюсь сравнить даты на графике на рисунке.Я хочу сравнить ячейки 1 и 2, и если даты совпадают, перейдите к 3 и 4 и сделайте то же самое сравнение, а затем перейдите к 5 и 6 и так далее.Если даты разные, я хочу добавить 1 к счетчику.Затем в конце каждой строки мне нужно заполнить ячейку в конце строки 0 в ней в настоящее время значением счетчика, а затем сбросить счетчик и перейти к следующей строке и так далее.поэтому счетчик в кружке должен показывать 1, потому что есть одна пара разных дат.Код, который у меня есть, прилагается.В настоящее время он говорит мне «Требуется объект» в Set CompD1.Довольно новичок в этом, поэтому любая помощь приветствуется.enter image description here

Dim i As Integer
Dim j As Integer
Dim AdjPln As Integer
Dim CompD1 As Range
Dim CompD2 As Range
Dim cRow As Integer

For i = 0 To 49

AdjPln = 0

cRow = i + 13

    For j = 0 To 9
    Set CompD1 = Cells(cRow, j + 5).value
    Set CompD2 = Cells(cRow, j + 6).value
        If CompD1 = CompD2 Then
            j = j + 2
        Else
            AdjPln = AdjPln + 1
            j = j + 2
        End If

    Next j

Cells(cRow, 24) = AdjPln

Stop
Next i

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Похоже, что это можно сделать с помощью простой формулы.Поместите это в X13 и перетащите вниз.

=SUMPRODUCT((E13:U13<>F13:V13)*(E13:U13<>"")*(F13:V13<>"")*ISODD(COLUMN(E13:U13)))
0 голосов
/ 29 января 2019

Я думаю, что ваш цикл j является проблемой, когда вы пытались изменить значение с формулой, чтобы увеличить на 2 вместо 1. Когда вы пошли в цикл с шагом, отличным от одного, вы можете использовать опцию Step,В вашем случае вы хотите зациклить j на 2, чтобы Step 2.Вы также можете сделать отрицательный, если это полезно.

Проверьте, работает ли это:

Dim i As Integer, j As Integer, AdjPln As Integer, cRow As Integer

For i = 0 To 49

AdjPln = 0

cRow = i + 13

 For j = 0 To 9 Step 2

    If Cells(cRow, j + 5).Value <> Cells(cRow, j + 6).Value Then

        AdjPln = AdjPln + 1

    End If

 Next j

Cells(cRow, 24) = AdjPln

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