Я пытаюсь сравнить данные по рабочим листам. У меня есть значения от C14
до C19
на листе 1.a и листа 1.b. Я пытаюсь использовать for each loop
для вычитания ячеек в столбце C
на листе 1.a из ячеек в столбце C
на листе 1.b и заполнять результаты в столбце C
на листе 1.c. Я пытаюсь использовать циклы для этого процесса, потому что у меня есть 50 листов с версиями a и b. Следующий код vba заполняет первые два листа # .c с результатами, но не работает на всех других листах # .c. Любые предложения приветствуются.цикл над 2 наборами рабочих листов, выполнить вычисления и заполнить 3-й набор рабочих листов
Вот структура кода:
Sub DataSubtract()
Application.ScreenUpdating = False
Dim sheet_name As Range
Dim sheet_name2 As Range
Dim sheet_name3 As Range
Set sheet_name2 = Sheets("WS_QA").Range("B:B")
Set sheet_name3 = Sheets("WS_QA").Range("C:C")
'Counter 1
Dim counter As Long
counter = 1
'Counter 2 for sheet_name3
Dim counter2 As Long
counter2 = 1
'Row
Dim r As Long
For Each sheet_name In Sheets("WS_QA").Range("A:A")
If sheet_name.Value = "" Then
Exit For
Else
With Sheets(sheet_name.Value)
'Column C
For r = 14 To 39
.Cells(r, 3).Value = Sheets(sheet_name2(counter, 1).Value).Cells(r, 3).Value - Sheets(sheet_name3(counter2, 1).Value).Cells(r, 3).Value
counter = counter + 1
counter2 = counter2 + 1
Next r
End With
End If
Next sheet_name
Application.ScreenUpdating = True
End Sub
С наилучшими пожеланиями,
Прямо сейчас 'counter' и' counter2' делают то же самое. Должен ли 'counter2' находиться вне цикла for? И я предполагаю, что вы хотите сбросить счетчики на 1 для каждого листа. – chancea
Да, думаю, мне не нужен второй счетчик вообще. – user3242245