Показать сообщение отдельно
  (#3 (permalink)) Старый
Печальный тип Печальный тип вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 05.07.2018
По умолчанию 01.09.2018, 08:08

vb Код:
Sub find()
Dim i, j, n
Dim a1 As Worksheet, a2 As Worksheet
Set a1 = Sheet1
Set a2 = Ëèñò1
n = a1.Cells(1, 8)
If n <= 1 Then
    MsgBox "Укажите в ячейке H1  номер строки с которой начать проверку"
    GoTo back:
End If

For i = n To a1.UsedRange.Rows.Count
    a1.Cells(i, 8) = "No"
    For j = 4 To a2.UsedRange.Rows.Count
        If a1.Cells(i, 1) = a2.Cells(j, 3) And a1.Cells(i, 3) <= a2.Cells(j, 12) And a1.Cells(i, 4) = a2.Cells(j, 15) Then
            a1.Cells(i, 8) = "Yes"
            Exit For
        End If
    Next j
Next i
back:
End Sub


Моих мозгов хватает лишь на такой макрос...
1) не идет опять же исключения, в случае повторения, можно в принципе это доделать если посидеть повтыкать, но проще задать порядковый номер или добавить дополнительное поле, где делать отметку для самого макроса о уже использованных строках или окрашивать их
2) то ли мой комп помирает, то ли дело в коде, но полностью обрабатывать все строки с 1 листа не получается, поэтому в первом цикле я брал первые 100 строк, иначе он зависает в тяжести поставленной задачи.
3) нужно указывать с какой строки листа Accrued начать сравнивать с листом Used. Поможет ускорить работу, чтобы при добавлении новых строк не требовалось по новой сравнивать старые результаты.
Ответить с цитированием
Пользователь сказал cпасибо:
Iceeyes (03.09.2018)
Ads