Страницы: 1
RSS
Сложный фильтр таблицы
 
Добрый день, уважаемые Доки!!!
Подскажите будьте доьбры, можно ли каким либо образом отфильтровать приложенную таблицу, так чтобы по даты по плану были от старых к новым, но при этом под ними сохранялись ячейки факта( они могут быть заполненые или пустые) так как это является группой?
 
DBT, кто такие доки?
Изменено: Jack Famous - 03.08.2022 12:00:58
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
кто такие доки
Дока - тот, кто сведущ в какой-либо области деятельности, искусен в каком-либо деле.
 
DBT, лучше всё-таки "специалисты" или типа того…
По вопросу: вам нужно в доп. столбец продублировать даты плана и скопировать их в даты факта.
Если в Плане нет повторяющихся значений, то этого хватит
Скрин
Изменено: Jack Famous - 03.08.2022 12:03:11
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
Option Explicit

Sub mySort()
    Dim Application_Calculation As Long
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual

    Dim sh1 As Worksheet
    Set sh1 = ActiveSheet
    sh1.Copy
    Dim sh2 As Worksheet
    Set sh2 = ActiveSheet
    
    Dim yy As Long
    Dim xx As Long
    Dim arr As Variant
    With sh2
        yy = .Cells(.Rows.Count, "F").End(xlUp).Row
        arr = .Range("E1").Resize(yy, 3)
        
        For yy = 3 To UBound(arr, 1)
            Select Case arr(yy, 2)
            Case """Ф"""
                For xx = 1 To UBound(arr, 2)
                    arr(yy, xx) = Empty
                Next
            End Select
        Next
        
        .Range("E1").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
        
        Dim rr As Range
        Set rr = .Range("E2").Resize(UBound(arr, 1) - 1, UBound(arr, 2))
        With .Sort
            .SortFields.Clear
            .SortFields.Add Key:=rr.Columns(3), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SortFields.Add Key:=rr.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange rr
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
        yy = .Cells(.Rows.Count, "F").End(xlUp).Row
        .Range(.Cells(yy + 1, [E1].Column), .Cells(.Rows.Count, [G1].Column)).Clear
        arr = .Range("E1").Resize(yy, 3)
        
        Dim uu As Long
        For yy = UBound(arr, 1) To 3 Step -1
            uu = WorksheetFunction.Match(arr(yy, 1), sh1.Columns("E:E"), 0)
            .Rows(yy + 1).Insert
            sh1.Cells(uu + 1, 5).Resize(1, 3).Copy .Cells(yy + 1, 5)
        Next
    End With
    
    Application.Calculation = Application_Calculation
End Sub

В названии темы указанно "фильтр", а в условии по факту "сортировка".
Изменено: МатросНаЗебре - 03.08.2022 12:11:48
 
DBT,
вариант предложенный Jack Famous можно сделать в Power Query
 
Jack Famous, Спасибо специалист!!!)))  
 
МатросНаЗебре, это в какой модуль вкладывать в лист или отдельный?  
 
Лучше в стандартный, отдельный.
Страницы: 1
Наверх