uhm писал(а)::shock:
СУММЕСЛИ
uhm писал(а):Вертикальный просмотр, или горизонтальный просмотр. VLOOKUP и HLOOKUP в английской версии.
Вариант с индексом, предложенный I10
, кстати, тоже видимо покатит. Только нужно правильно обрабатывать ненайденные значения.
=ВПР(A6;$C$6:$D$12;2;ЛОЖЬ)
Private Sub Сравнить()
Row = Application.CountA(Sheets("ХХХХ").Columns(1)) 'находит последнюю незаполненную строку таблицы
With ActiveWorkbook.Sheets("лист1")
For i = 1 To Row
For j = 1 To Row
If .Cells(i, 1).Text = .Cells(j, 3).Text Then 'сравнивает коды
.Cells(i, 5).Value = .Cells(i, 1).Value 'делает новую таблицу вплотную с первой
.Cells(i, 6).Value = .Cells(i, 2).Value
.Cells(i, 7).Value = .Cells(j, 3).Value
.Cells(i, 8).Value = .Cells(j, 4).Value
End If
Next
Next
End With
End Sub
GAGArin писал(а):
- Код: Выделить всё
=ВПР(A6;$C$6:$D$12;2;ЛОЖЬ)
Для первой строчки. У меня выдает как надо.
Главное указать интервальный просмотр в False иначе он считает таблицу отсортированной.
Bagathur писал(а):
- Код: Выделить всё
Private Sub Сравнить()
Row = Application.CountA(Sheets("ХХХХ").Columns(1)) 'находит последнюю незаполненную строку таблицы
With ActiveWorkbook.Sheets("лист1")
For i = 1 To Row
For j = 1 To Row
If .Cells(j, 1).Text = .Cells(j, 3).Text Then 'сравнивает коды
.Cells(i, 5).Value = .Cells(i, 1).Value 'делает новую таблицу вплотную с первой
.Cells(i, 6).Value = .Cells(i, 2).Value
.Cells(i, 7).Value = .Cells(j, 3).Value
.Cells(i, 8).Value = .Cells(j, 4).Value
End If
Next
Next
End With
End Sub
У меня вроде работает. Хотя если строк много на быстроту расчитывать не приходится.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10