Страницы: 1
RSS
VBA. Найти все совпадения по дате в умной таблице и вывести результат в другую умной
 
Добрый вечер!
Уважаемые знатоки  VBA направьте на путь истинный. Задача вроде простая найти все совпадения по дате  в умной таблице, затем найденные значения занести в другую умную таблицу и если дата измениться, то что бы при обновлении данных таблица сначала очищалась, а затем уже добавлялись новые данные.

Вроде написал, но на начале цикла макрос спытыкается и что то мне кажется я как то не так это делаю, вроде понимаю что надо скорее всего через Find но туплю по страшному.
Спасибо за любую наводку))
Код
Option Explicit
Dim ShList1 As Worksheet
Dim List1Obj As ListObject
Dim List1ListRow As ListRow
Dim ShList2 As Worksheet
Dim List1Obj2 As ListObject
Dim List1ListRow2 As ListRow

Sub Найти_строку_по_дате()

Dim Cell As Range

Set ShList1 = ThisWorkbook.Worksheets("Лист1")
Set List1Obj = ShList1.ListObjects("Таблица1")

Set ShList2 = ThisWorkbook.Worksheets("Лист2")
Set List1Obj2 = ShList2.ListObjects("Таблица2")

Set Cell = List1Obj2.ListColumns.Item(4).Range.Find(ThisWorkbook.Worksheets("Лист1").Cells(1, 5), LookAt:=xlWhole)
     If Not Cell Is Nothing Then
      List1Obj.Range.Clear
      For Each Cell In List1Obj2.ListRows
    Set List1ListRow = List1Obj.ListRows.Add
    List1ListRow.Range(1) = Cell.Cells(1, -3)
    List1ListRow.Range(2) = Cell.Cells(1, -2)
    List1ListRow.Range(3) = Cell.Cells(1, -1)
    Next Cell
    End If
    End Sub
 
Доброго времени суток
Код
Sub CopyRows()
    Dim List1Obj As ListObject
    Dim List2Obj As ListObject
    Set List1Obj = Excel.Range("Таблица1").ListObject
    Set List2Obj = Excel.Range("Таблица2").ListObject
    Dim oRng As Range, oRng1 As Range
    
    With List2Obj.ListColumns("дата оплаты").DataBodyRange
        Application.FindFormat.Clear
        .Replace Format([Лист1!E1], "dd.MM.yyyy"), "=" & .Cells(0, 1).Address(), xlWhole, , , , True, False
        .Replace [Лист1!E1], "=" & .Cells(0, 1).Address(), xlWhole, , , , True, False
        On Error GoTo er
        Set oRng = .Cells(0, 1).DirectDependents
        Set oRng1 = List1Obj.ListRows.Add.Range.Cells(1, 1)
        Intersect(oRng.EntireRow, .ListObject.DataBodyRange.Resize(, 3)).Copy
        oRng1.PasteSpecial xlPasteValues
        oRng.Value = [Лист1!E1]
    End With
    
    Exit Sub
er: MsgBox "Не найдено!"
End Sub
Изменено: Андрей Лящук - 25.05.2020 00:57:09
 
Андрей Лящук, доброе утро.
Спасибо Вам большое за помощь, чуть оптимизировал под свои данные и то что нужно.
Еще раз спасибо :)  
Страницы: 1
Наверх