Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос сортировка по горизонтали
 
Добрый день!

Пытаюсь сделать первый макрос. Не выходит. Такое впечатление, что диапазоны напутал. Есть файл с блоками инфо. Кол-во блоков и строк в блоке может быть разное. Необходимо все диапазоны от колонки B до K отфильтровать по шапке. По колонкам от меньшего к большему. Фильтр в такой последовательности: Размер, ЗО, Город, Размер, ЗО.
Может кто-нибудь подсказать как макрос подправить?

Спасибо![
Код
Dim i As Long, lr As Long, cell As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = lr To 1 Step -1
For k = 2 To 11
        ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
        ' горизонтальный фильтр для строки 1 от меньшего к большему
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(Cells(Rows.Count, 1).End(xlToRight).Row), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(Column.Count, 2).End(xlToRight).Column
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ' горизонтальный фильтр для строки 2 от меньшего к большему
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(Cells(Rows.Count, 2).End(xlToRight).Row), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(Column.Count, 2).End(xlToRight).Column
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ' горизонтальный фильтр для строки 3 от меньшего к большему
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(Cells(Rows.Count, 3).End(xlToRight).Row), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(Column.Count, 2).End(xlToRight).Column
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
       ' горизонтальный фильтр для строки 1 от меньшего к большему
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(Cells(Rows.Count, 1).End(xlToRight).Row), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(Column.Count, 2).End(xlToRight).Column
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ' горизонтальный фильтр для строки 2 от меньшего к большему
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(Cells(Rows.Count, 2).End(xlToRight).Row), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(Column.Count, 2).End(xlToRight).Column
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = TrueEnd Sub

Макрос преобразовывает результат формулы в значение. Как оставить формулу?
 
Добрый день!

Кто-нибудь знает, что надо добавить в макрос, чтобы формула осталась формулой, а не преобразовывалась в значение автоматом? Перерыл весь интернет, нашел только статьи, где всё наоборот, умышленное преобразование формулы в значение.
Отфильтровать колонки от меньшего значения к большему
 
Добрый день!

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

При записи макроса получается вот такой код. Это для первого действия - Фильтр по формату. Далее код повторяется 5 раз, меняются строки к которым применяется фильтр.
Код
Range(ActiveCell, ActiveCell.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("F1:O1") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("F1:O13")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With

Как поменять код, чтобы размер фильтруемой таблицы менялся автоматом и сам фильтр применялся ко всем блокам таблицы? В примере 2 блока, их может быть сколько угодно. По колонке Е в каждом блоке от слова Формат до слова Разница необходимо отфильтровать столбцы справа.
Есть какие идеи? Либо, можно это разбить на несколько последовательных простых действий?

Спасибо!
Макрос_горизонтальная фильтрация. Распознать блоки с разными числами и разделил их.
 
Добрый день! Прошу подсказать макрос для файла во вложении. На листе 1 и 2 исходные данные. На листе Итог - требуемая таблица. Колонка С на листе 1 может содержать большое кол-во значений. Шаг между числами любой. Главное чтобы макрос распознавал блоки с разными числами и делил их.
Над каждым блоком должна быть стандартная шапка, внизу блока тоже. И главное фильтры. Регион и формат всегда должен быть от меньшего к большему. Кол-во строк и столбцов может быть разное. Если есть идеи как это сделать пусть и несколькими макросами - прошу подсказать. Руками уже замучался делать. Особенно когда под 80 блоков.
Страницы: 1
Наверх