Здравствуйте, столкнулся с проблемой сравнения ячеек между двумя столбцами: при этом 1) если ячейка из столбца "C" совпадает с ячейкой из столбца "A", то скопировать ее на лист2, 2) а если у нее в другом столбе нет совпадений, то скопировать ее на лист3. С первой задачей справился, а вот скопировать уникальную найденную ячейку не получается.
Пример кода:
Sub Poisk()
Dim LastRow_1, LastRow_3, i
Dim Ran_1 As Range, Ran_3 As Range, Cel_1 As Range, Cel_3 As Range, temp1 As Range, temp2 As Range
Dim IsFind As Boolean
IsFind = False
i = 2 ' чтобы не захватывать названия столбов
LastRow_1 = Cells(Cells.Rows.Count, 1).End(xlUp).Row 'до куда бежать по списку товаров на складе
LastRow_3 = Cells(Cells.Rows.Count, 3).End(xlUp).Row ' до куда бежать по списку товаров в магазине
With Sheets("Лист1")
Set Ran_3 = Range(.Cells(1, 3), .Cells(LastRow_3, 3)) 'диапозон - длина перебора складских товаров
Set Ran_1 = Range(.Cells(1, 1), .Cells(LastRow_1, 1)) 'диапозон - длина перебора товаров в магазине
Ran_1.Font.Bold = False
End With
For Each Cel_3 In Ran_3
IsFind = False
For Each Cel_1 In Ran_1
'убираем все лишние знаки и пробелы и сравниваем две строки
If (Not IsFind) Then
If Chistka(Cel_1.Text) Like "*" & Chistka(Cel_3.Text) Then' функция chistka написана отдельно для очистки от ненужных символов
Cel_1.Font.Bold = True
Cel_1.Cells(1, 1).Copy Sheets("Лист2").Cells(i, 1)' копируем нужные ячейки на другой лист
Cel_1.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 2)
Cel_3.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 3)
i = i + 1
IsFind = True
End If
End If
Next Cel_1
Next Cel_3
End Sub
Пример кода:
Sub Poisk()
Dim LastRow_1, LastRow_3, i
Dim Ran_1 As Range, Ran_3 As Range, Cel_1 As Range, Cel_3 As Range, temp1 As Range, temp2 As Range
Dim IsFind As Boolean
IsFind = False
i = 2 ' чтобы не захватывать названия столбов
LastRow_1 = Cells(Cells.Rows.Count, 1).End(xlUp).Row 'до куда бежать по списку товаров на складе
LastRow_3 = Cells(Cells.Rows.Count, 3).End(xlUp).Row ' до куда бежать по списку товаров в магазине
With Sheets("Лист1")
Set Ran_3 = Range(.Cells(1, 3), .Cells(LastRow_3, 3)) 'диапозон - длина перебора складских товаров
Set Ran_1 = Range(.Cells(1, 1), .Cells(LastRow_1, 1)) 'диапозон - длина перебора товаров в магазине
Ran_1.Font.Bold = False
End With
For Each Cel_3 In Ran_3
IsFind = False
For Each Cel_1 In Ran_1
'убираем все лишние знаки и пробелы и сравниваем две строки
If (Not IsFind) Then
If Chistka(Cel_1.Text) Like "*" & Chistka(Cel_3.Text) Then' функция chistka написана отдельно для очистки от ненужных символов
Cel_1.Font.Bold = True
Cel_1.Cells(1, 1).Copy Sheets("Лист2").Cells(i, 1)' копируем нужные ячейки на другой лист
Cel_1.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 2)
Cel_3.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 3)
i = i + 1
IsFind = True
End If
End If
Next Cel_1
Next Cel_3
End Sub