Вот решение. Думаю, я правильно вас понял. Макрос ниже выделяет совпадения периодов по всей строке найденного счета, исключая пустые значения
Только он работает при условии, что период задолженности начинается с 8 столбца.
Код |
---|
Sub comparingWithCondition()
Dim h, i, k As Integer, n As Long, Compar As Long
Dim wshSource As Worksheet, wshTarget As Worksheet
Set wshSource = ThisWorkbook.Sheets(1)
Set wshTarget = ThisWorkbook.Sheets(2)
k = wshSource.UsedRange.Rows.Count
n = wshTarget.UsedRange.Rows.Count
For h = 3 To n
For i = 2 To k
If StrComp(wshTarget.Cells(h, 1), wshSource.Cells(i, 1)) = 0 Then
wshSource.Cells(i, 3).Interior.Color = vbGreen
wshTarget.Cells(h, 3).Interior.Color = vbGreen
For Compar = 8 To wshSource.UsedRange.Columns.Count
For n = 8 To wshTarget.UsedRange.Columns.Count
If StrComp(wshTarget.Cells(h, n), wshSource.Cells(i, Compar)) = 0 And wshTarget.Cells(h, n) <> 0 And wshSource.Cells(i, Compar) <> 0 Then
wshSource.Cells(i, Compar).Interior.Color = vbGreen
wshTarget.Cells(h, n).Interior.Color = vbGreen
End If
Next n
Next Compar
End If
Next i
Next h
MsgBox "Процедура закончена!"
End Sub
|
У Вас таблица базы данных должна находиться на лите 1, а выборка на листе 2. Так работает этот макрос. k = wshSource.UsedRange.Rows.Count - это количество строк рабочего диапазона листа 1 (Set wshSource = ThisWorkbook.Sheets(1 - это первый лист)), также и в отношении второго листа
Также для того, чтобы результат был корректен нужно, чтобы все столбцы были именно в том порядке, что и в вашей выгрузке и 1С (которую вы приложили к вопросу)