Помогите пожалуйста еще одним макросом. Есть файл с данными, в нем нужно с помощью макроса: 1. Сортировать по возрастанию столбик "Е" 2. Удалить строчки с данными столбика Е "999а" 3. Упорядочить оставшиеся данные так, что б каждая первая цифра из столбика "Е" начиналась с новой страницы (шапка остается только на первом листе, так же там уже есть колонтитул верхний на каждый лист с датой) для печати.
Суть та, что данные каждый раз разное количество и их надо распечатать и разложить в разные папки согласно первой цифре столбика Е. Данные каждой цифры может быть по 10 листов, а может всего несколько строчек
Во вложении два листа: сырая база и как должно быть..
Возможно ли вообще такое? Заранее спасибо
Добрый день/вечер
Помогите пожалуйста еще одним макросом. Есть файл с данными, в нем нужно с помощью макроса: 1. Сортировать по возрастанию столбик "Е" 2. Удалить строчки с данными столбика Е "999а" 3. Упорядочить оставшиеся данные так, что б каждая первая цифра из столбика "Е" начиналась с новой страницы (шапка остается только на первом листе, так же там уже есть колонтитул верхний на каждый лист с датой) для печати.
Суть та, что данные каждый раз разное количество и их надо распечатать и разложить в разные папки согласно первой цифре столбика Е. Данные каждой цифры может быть по 10 листов, а может всего несколько строчек
Во вложении два листа: сырая база и как должно быть..
Sub DeleteBlankRowSort() Dim i& Dim n& With ActiveSheet.ListObjects(1) 'удаляем из таблицы строки где в столбце С пусто .Range.AutoFilter .Range.AutoFilter Field:=3, Criteria1:="" Application.DisplayAlerts = False On Error Resume Next .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete Application.DisplayAlerts = True .Range.AutoFilter 'сортировка по столбцу Е .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Intersect(.DataBodyRange, Columns(5)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With .Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'расстановка разрывов For i = .ListRows.Count To .DataBodyRange.Row Step -1 n = Mid(.DataBodyRange(i, 5), 1, 1) If Mid(.DataBodyRange(i, 5), 1, 1) <> Mid(.DataBodyRange(i - 1, 5), 1, 1) Then ActiveSheet.HPageBreaks.Add .ListRows(i).Range End If Next End With End Sub
[/vba]
Цитата
нужно с помощью макроса
[vba]
Код
Sub DeleteBlankRowSort() Dim i& Dim n& With ActiveSheet.ListObjects(1) 'удаляем из таблицы строки где в столбце С пусто .Range.AutoFilter .Range.AutoFilter Field:=3, Criteria1:="" Application.DisplayAlerts = False On Error Resume Next .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete Application.DisplayAlerts = True .Range.AutoFilter 'сортировка по столбцу Е .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Intersect(.DataBodyRange, Columns(5)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With .Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'расстановка разрывов For i = .ListRows.Count To .DataBodyRange.Row Step -1 n = Mid(.DataBodyRange(i, 5), 1, 1) If Mid(.DataBodyRange(i, 5), 1, 1) <> Mid(.DataBodyRange(i - 1, 5), 1, 1) Then ActiveSheet.HPageBreaks.Add .ListRows(i).Range End If Next End With End Sub