Я предлагаю вам поработать с номерами столбцов, если можете. Тогда вы, вероятно, увидите, что вам нужно гораздо меньше индексов, чем в текущем коде, и вы не забудете так легко обновить индексы (например, iRow2
и iCol2
).
Dim dataSheet As Worksheet
Dim headerSheet As Worksheet
Set dataSheet = ActiveWorkbook.Sheets(2)
Set headerSheet = ActiveWorkbook.Sheets(1)
Dim r As Integer
For r = 9 To 80
If dataSheet.Cells(r, 3).Value <> dataSheet.Cells(r + 2, 3).Value Then
dataSheet.Cells(r, 1).Value = headerSheet.Cells(1, 14).Value
End If
Next r
Это должно дать вам хорошее начало. Я не знаю, что именно внутренний цикл предназначен для проверки, потому что вы никогда не касаетесь iRow2
и iCol2
, он попытается проверить ячейку с R0C0, которая является неверным адресом. Если вы хотите убедиться, что строка, с которой вы сравниваете, не пуста, сначала проверьте это в цикле For
:
...
For r = 9 To 90
If dataSheet.Cells(r + 2, 3).Value = "" Then
Exit For
ElseIf dataSheet.Cells(r, 3).Value <> dataSheet.Cells(r + 2, 3).Value Then
dataSheet.Cells(r, 1).Value = headerSheet.Cells(1, 14).Value
End If
Next r