Страницы: 1
RSS
Перенос данных с одного листа в другой (с фильтром)
 
Добрый день!
может сможете подсказать как лучше это можно реализовать ?
Есть  лист в таблице - в ней ежедневно обновляются данные со статичными заголовками. один из столбцов цифровой. и есть значения к примеру = 9999.
Можно ли настроить фильтры так что все данные с этого листа со значением цифрового столбца копируются в другой лист ?

По факту сейчас приходится делать дополнительные действия:
в листе делать фильтр по столбцу желаемого и по цифровому значению. далее выделять видимую область, ее копировать и вставлять. и уже с ней работать.

можно ли как-нибудь автоматизировать данный шаг ?
Изменено: Artur88 - 19.04.2020 11:06:04
 
Цитата
Artur88 написал:
Есть  лист в таблице
обычно таблица на листе, а не наоборот ))
И где эта таблица?
 
Код
Sub КопированиеСфильтром()
    If ActiveWorkbook.Sheets.Count = 1 Then
        MsgBox "Должно быть не менее двух листов.", vbExclamation
        Exit Sub
    End If
    
    Dim y As Long
    Dim u As Long
    Dim x As Integer
    Dim a As Variant
    Dim b As Variant
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    
    Set sh1 = ActiveSheet   'Лист откуда копируем
    Set sh2 = Sheets(2)     'Лист куда копируем
    
    With sh1.UsedRange
        x = .Column + .Columns.Count - 1
        y = .Row + .Rows.Count - 1
        If y = 1 Then y = 2
        a = .Range(.Cells(1, 1), .Cells(y, x))
    End With
    ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
    
    For y = 1 To UBound(a, 1)
        If a(y, 1) = "Иванов" Then 'Это то, что вы назвали "делать фильтр по столбцу желаемого"
        If a(y, 3) = 1 Then '"...по цифровому значению."
        If Not sh1.Rows(y).Hidden Then
            u = u + 1
            For x = 1 To UBound(a, 2)
                b(u, x) = a(y, x)
            Next
        End If
        End If
        End If
    Next
    
    If u > 0 Then
        With sh2
            y = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
            .Cells(y, 1).Resize(u, UBound(b, 2)) = b
        End With
        MsgBox "Скопировано " & u & " строк.", vbInformation
    End If
End Sub
 
Цитата
Юрий М написал:
обычно таблица на листе, а не наоборот ))И где эта таблица?
:)))) да, прикольно.
А таблица, автор же написал, она над листом :)
 
Цитата
можно ли как-нибудь автоматизировать
Макросом, поставили фильтр и скопировали видимые строки в нужное место
Код
ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy
 
Спасибо всем что направили в нужном направлении (в сторону макросов).
Обнаружил для себя очень хорошую вещь как запись макросов. сделал 3 листа, 1 лист с обновляемыми данными, 1 лист обработанный и 1 лист = результат.
Записал макрос где делаю фильтрацию по своим данным и копирую в лист обработанный откуда уже данные конвертируются с помощью формул в результат
 
Цитата
откуда уже данные конвертируются с помощью формул в результат
Зачем формулы, если есть макрос?
 
Там уже следующий этап обработки идет - в таблице есть время в unix формате - которое конвертируется в обычное время (формулами это проще делается) с привязкой к моему часовому поясу и отображение конечного результата идет.
Страницы: 1
Наверх