Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разбивка листа на книги по условию, Нарезать эксель книгу - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разбивка листа на книги по условию, Нарезать эксель книгу (Макросы/Sub)
Разбивка листа на книги по условию, Нарезать эксель книгу
mozie Дата: Понедельник, 13.03.2017, 12:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет. Нарыл макрос, который делит листы по условию на книги.
Однако мне нужно адаптировать его:
нужно условие брать из третьего столбца и лист у меня только один и данные у меня начинаются с 2 столбца,а не 3.
файл пример во вложении.

[vba]
Код
Option Explicit
Sub razdelit()
Dim oDic As Object, arr(), arWB(), j As Long, wbOld As Workbook
Dim sh As Worksheet, i As Long, cnt As Long, k As Long, wb As Workbook
Set wbOld = ThisWorkbook
For Each sh In Worksheets
arr = sh.UsedRange.Value
Set oDic = CreateObject("scripting.dictionary")
For i = 3 To UBound(arr)
oDic.Item(arr(i, 1)) = arr(i, 1)
Next
Next
arWB = oDic.items
Set oDic = Nothing
ReDim arrData(1 To UBound(arr), 1 To UBound(arr, 2))
    For i = 1 To UBound(arWB)
    Set wb = Workbooks.Add
    wb.SaveAs "D:\test" & "\" & arWB(i) & ".xlsx" 'ïóòü ñîõðàíåíèÿ ôàéëîâ
    Set wb = ActiveWorkbook
    For Each sh In wbOld.Worksheets
    cnt = 0
    arr = sh.UsedRange.Value
        For j = 3 To UBound(arr)
            If arr(j, 1) = arWB(i) Then
                cnt = cnt + 1
                For k = 1 To UBound(arr, 2)
                arrData(cnt, k) = arr(j, k)
                Next
            End If
        Next
    wb.Sheets.Add.Name = sh.Name
    wb.Sheets(sh.Name).[a1].Resize(cnt, UBound(arr, 2)) = arrData
    Next
    wb.Close True
    Next
End Sub
[/vba]
К сообщению приложен файл: post_218079.rar (16.9 Kb)
 
Ответить
СообщениеВсем привет. Нарыл макрос, который делит листы по условию на книги.
Однако мне нужно адаптировать его:
нужно условие брать из третьего столбца и лист у меня только один и данные у меня начинаются с 2 столбца,а не 3.
файл пример во вложении.

[vba]
Код
Option Explicit
Sub razdelit()
Dim oDic As Object, arr(), arWB(), j As Long, wbOld As Workbook
Dim sh As Worksheet, i As Long, cnt As Long, k As Long, wb As Workbook
Set wbOld = ThisWorkbook
For Each sh In Worksheets
arr = sh.UsedRange.Value
Set oDic = CreateObject("scripting.dictionary")
For i = 3 To UBound(arr)
oDic.Item(arr(i, 1)) = arr(i, 1)
Next
Next
arWB = oDic.items
Set oDic = Nothing
ReDim arrData(1 To UBound(arr), 1 To UBound(arr, 2))
    For i = 1 To UBound(arWB)
    Set wb = Workbooks.Add
    wb.SaveAs "D:\test" & "\" & arWB(i) & ".xlsx" 'ïóòü ñîõðàíåíèÿ ôàéëîâ
    Set wb = ActiveWorkbook
    For Each sh In wbOld.Worksheets
    cnt = 0
    arr = sh.UsedRange.Value
        For j = 3 To UBound(arr)
            If arr(j, 1) = arWB(i) Then
                cnt = cnt + 1
                For k = 1 To UBound(arr, 2)
                arrData(cnt, k) = arr(j, k)
                Next
            End If
        Next
    wb.Sheets.Add.Name = sh.Name
    wb.Sheets(sh.Name).[a1].Resize(cnt, UBound(arr, 2)) = arrData
    Next
    wb.Close True
    Next
End Sub
[/vba]

Автор - mozie
Дата добавления - 13.03.2017 в 12:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разбивка листа на книги по условию, Нарезать эксель книгу (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!