В книге 3 столбца, в столбце А и B значения. В столбце С - порядковый номер реестра.
Надо создать новую книгу которая будет называться номером реестра и содержать в себе данные из первых 2 столбцов соответствующих этому реестру (и желательно заголовок таблицы). Заранее спасибо
Добрый день, помогите с макросом пожалуйста.
В книге 3 столбца, в столбце А и B значения. В столбце С - порядковый номер реестра.
Надо создать новую книгу которая будет называться номером реестра и содержать в себе данные из первых 2 столбцов соответствующих этому реестру (и желательно заголовок таблицы). Заранее спасибоLeko
Sub RaznestiReestr() Dim i As Long Dim n As Long Dim Criterij As String Dim iName As String Dim WCur As Worksheet Dim WbN As Workbook Dim AutoFilter As AutoFilter Application.ScreenUpdating = False Set WCur = ThisWorkbook.Worksheets("Лист2") Columns("E").ClearContents 'отбор уникальных значений столбца C в столбец E Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy _ , CopyToRange:=Range("E1"), Unique:=True 'количество уникальных значений n = Cells(Rows.Count, "E").End(xlUp).Row For i = 2 To n 'цикл по уникальным значениям Criterij = Cells(i, "E") iName = "Номер реестра_" & Criterij 'имя новой книги 'создаем новую книгу с одним листом Set WbN = Workbooks.Add(xlWBATWorksheet) 'ставим автофильтр по столбцу C WCur.Range("C1").CurrentRegion.AutoFilter 3, Criterij 'копируем видимые строки в новую книгу WCur.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy WbN.Sheets("Лист1").Range("A1") WCur.AutoFilter.Range.AutoFilter
WbN.Sheets("Лист1").Columns("A:C").AutoFit WbN.SaveAs ThisWorkbook.Path & "\" & iName & ".xls" WbN.Close SaveChanges:=True Next Application.ScreenUpdating = True End Sub
[/vba]
Цитата
помогите с макросом
[vba]
Код
Sub RaznestiReestr() Dim i As Long Dim n As Long Dim Criterij As String Dim iName As String Dim WCur As Worksheet Dim WbN As Workbook Dim AutoFilter As AutoFilter Application.ScreenUpdating = False Set WCur = ThisWorkbook.Worksheets("Лист2") Columns("E").ClearContents 'отбор уникальных значений столбца C в столбец E Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy _ , CopyToRange:=Range("E1"), Unique:=True 'количество уникальных значений n = Cells(Rows.Count, "E").End(xlUp).Row For i = 2 To n 'цикл по уникальным значениям Criterij = Cells(i, "E") iName = "Номер реестра_" & Criterij 'имя новой книги 'создаем новую книгу с одним листом Set WbN = Workbooks.Add(xlWBATWorksheet) 'ставим автофильтр по столбцу C WCur.Range("C1").CurrentRegion.AutoFilter 3, Criterij 'копируем видимые строки в новую книгу WCur.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy WbN.Sheets("Лист1").Range("A1") WCur.AutoFilter.Range.AutoFilter
WbN.Sheets("Лист1").Columns("A:C").AutoFit WbN.SaveAs ThisWorkbook.Path & "\" & iName & ".xls" WbN.Close SaveChanges:=True Next Application.ScreenUpdating = True End Sub
Kuzmich, добрый день Пользуюсь вашим макросом, все работает отлично, вспоминаю добрым словом каждый день.
Но возникли 2 вопроса:
1. макрос завершает свое выполнение ошибкой, т.к. в конце создает очередной файл, но копировать в него ему нечего и соотв. не может сохранить с определенным именем. можно ли как то сказать ему чтобы при создании файла по последнему условию из цикла, он просто завершал работу без ошибки?
2. пример: В столбце E указаны названия магазинов, в остальных данные о платежных транзакциях. В ежедневных выгрузках разное число транзакций, и не всегда они есть по всем магазинам. Но есть 4 магазина данные по которым есть в каждой выгрузке. Задача: Используя макрос написанный вами выше, нужно также делить данные каждого магазина в отдельный файл, но, можно ли добавить исключение для 4 магазинов по следующему условию - "Маг 12 (оплата)" и "Маг 12 (возврат)" объеденить в 1 файл, вместо двух разных, и также "Маг 18 (оплата)" и "Маг 18 (возвраты)", названия изменил для примера. Названия менять нельзя, т.к. нам нужно видеть деление по оплате и возврату
Буду бесконечно благодарен, если у вас получится помочь
Kuzmich, добрый день Пользуюсь вашим макросом, все работает отлично, вспоминаю добрым словом каждый день.
Но возникли 2 вопроса:
1. макрос завершает свое выполнение ошибкой, т.к. в конце создает очередной файл, но копировать в него ему нечего и соотв. не может сохранить с определенным именем. можно ли как то сказать ему чтобы при создании файла по последнему условию из цикла, он просто завершал работу без ошибки?
2. пример: В столбце E указаны названия магазинов, в остальных данные о платежных транзакциях. В ежедневных выгрузках разное число транзакций, и не всегда они есть по всем магазинам. Но есть 4 магазина данные по которым есть в каждой выгрузке. Задача: Используя макрос написанный вами выше, нужно также делить данные каждого магазина в отдельный файл, но, можно ли добавить исключение для 4 магазинов по следующему условию - "Маг 12 (оплата)" и "Маг 12 (возврат)" объеденить в 1 файл, вместо двух разных, и также "Маг 18 (оплата)" и "Маг 18 (возвраты)", названия изменил для примера. Названия менять нельзя, т.к. нам нужно видеть деление по оплате и возврату
Буду бесконечно благодарен, если у вас получится помочьaladenskikhsergei