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

Вход

Регистрация

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

 

= Мир MS Excel/Деление файла на части по критерию(удаления ненужных строк) - Мир MS Excel

  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_, DrMini  
Деление файла на части по критерию(удаления ненужных строк)
Iurii Дата: Воскресенье, 27.08.2017, 18:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Просьба помочь оптимизировать макрос.
Есть файл, в котором несколько листов/сводных. В самом большом листе(в примере лист называться "Исх") будет около 80 тис. строчек(может быть и больше так как данные обновляются). Нужен макрос который исходный файл разделит на несколько файлов поменьше и перенесет в них только строки по определенному критерию.
То есть в колонке J записаны названия города (в примере Винница, Днепр, Киев) нужно создать файлы Винница_сегодняшняя_дата, Днепр_сегодняшняя_дата и т.д. и чтобы в новом файле остались только строки в которых название файла соответствует значению колонки J.

Я в VBA можно сказать новичок, это мой второй макрос, прошу сильно не ругать если плохо написал. Вот что у мене получилось:


В двух словах о макросе. Даные о количистве файлов и их название макрос берет из листа "Info" количество названий будет всегда одинаково и меняться не будет.
Для роботы макроса нужно на диске С иметь путь C:\отчёт\август\ (наверно можно сделать чтобы макрос создавал файлы в папке текущего рабочего файла, пока написал так, пока не критично).

С моими знаниями VBA я смог написать макрос который будет перебирать значение ячеек колонки J и удалять те которые не соответствуют критерию. Но этот метод очень долгий. Как оптимизировать не знаю.



Тестировал на файле из 13 тис строк. для создания одного файла требуется около 2 минут. Таких файлов нужно будет делать 25, исходник будет состоять из 80 тис строк. Думаю будет очеееень долго, а своими силами не знаю как изменить макрос чтоб работал шустрее.

Буду признателен за любой совет.
Спасибо!
К сообщению приложен файл: 8040872.xlsm (32.2 Kb)


Сообщение отредактировал Iurii - Воскресенье, 27.08.2017, 21:11
 
Ответить
СообщениеДобрый день.
Просьба помочь оптимизировать макрос.
Есть файл, в котором несколько листов/сводных. В самом большом листе(в примере лист называться "Исх") будет около 80 тис. строчек(может быть и больше так как данные обновляются). Нужен макрос который исходный файл разделит на несколько файлов поменьше и перенесет в них только строки по определенному критерию.
То есть в колонке J записаны названия города (в примере Винница, Днепр, Киев) нужно создать файлы Винница_сегодняшняя_дата, Днепр_сегодняшняя_дата и т.д. и чтобы в новом файле остались только строки в которых название файла соответствует значению колонки J.

Я в VBA можно сказать новичок, это мой второй макрос, прошу сильно не ругать если плохо написал. Вот что у мене получилось:


В двух словах о макросе. Даные о количистве файлов и их название макрос берет из листа "Info" количество названий будет всегда одинаково и меняться не будет.
Для роботы макроса нужно на диске С иметь путь C:\отчёт\август\ (наверно можно сделать чтобы макрос создавал файлы в папке текущего рабочего файла, пока написал так, пока не критично).

С моими знаниями VBA я смог написать макрос который будет перебирать значение ячеек колонки J и удалять те которые не соответствуют критерию. Но этот метод очень долгий. Как оптимизировать не знаю.



Тестировал на файле из 13 тис строк. для создания одного файла требуется около 2 минут. Таких файлов нужно будет делать 25, исходник будет состоять из 80 тис строк. Думаю будет очеееень долго, а своими силами не знаю как изменить макрос чтоб работал шустрее.

Буду признателен за любой совет.
Спасибо!

Автор - Iurii
Дата добавления - 27.08.2017 в 18:55
KuklP Дата: Воскресенье, 27.08.2017, 19:57 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
1) Оформляйте код тегами, кнопка # на панели редактирования. Исправьте свой пост.
2) Почему в самом файле нет макросов?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение1) Оформляйте код тегами, кнопка # на панели редактирования. Исправьте свой пост.
2) Почему в самом файле нет макросов?

Автор - KuklP
Дата добавления - 27.08.2017 в 19:57
KuklP Дата: Воскресенье, 27.08.2017, 20:31 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Все будет зависеть от скорости винта:


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 27.08.2017, 20:32
 
Ответить
СообщениеВсе будет зависеть от скорости винта:

Автор - KuklP
Дата добавления - 27.08.2017 в 20:31
Kuzmich Дата: Воскресенье, 27.08.2017, 20:37 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Цитата
чтобы макрос создавал файлы в папке текущего рабочего файла

[vba]
Код

Sub RaznestiDannye()
Dim i As Long
Dim Criterij As String
Dim iName As String
Dim WbN As Workbook
Dim Autofilter As Autofilter
Application.ScreenUpdating = False
    For i = 2 To 4          'цикл по городам
        Criterij = Worksheets("Info").Cells(i, 1)
        iName = Criterij    'имя новой книги
    'создаем новую книгу с одним листом
      Set WbN = Workbooks.Add(xlWBATWorksheet)
      ThisWorkbook.Worksheets("Исх").Activate
    'ставим автофильтр по столбцу J
          Range("A1").CurrentRegion.Autofilter 10, Criterij
    'копируем видимые строки в новую книгу
        ActiveSheet.Autofilter.Range.SpecialCells(xlCellTypeVisible).Copy WbN.Sheets("Лист1").Range("A1")
        ActiveSheet.Autofilter.Range.Autofilter
        
        WbN.Sheets("Лист1").Columns("A:J").AutoFit
        WbN.SaveAs ThisWorkbook.Path & "\" & iName & ".xls"
        WbN.Close SaveChanges:=True
    Next
Application.ScreenUpdating = True
End Sub
[/vba]

Дату в название файлов допишите сами. Удачи!


Сообщение отредактировал Kuzmich - Воскресенье, 27.08.2017, 20:38
 
Ответить
Сообщение
Цитата
чтобы макрос создавал файлы в папке текущего рабочего файла

[vba]
Код

Sub RaznestiDannye()
Dim i As Long
Dim Criterij As String
Dim iName As String
Dim WbN As Workbook
Dim Autofilter As Autofilter
Application.ScreenUpdating = False
    For i = 2 To 4          'цикл по городам
        Criterij = Worksheets("Info").Cells(i, 1)
        iName = Criterij    'имя новой книги
    'создаем новую книгу с одним листом
      Set WbN = Workbooks.Add(xlWBATWorksheet)
      ThisWorkbook.Worksheets("Исх").Activate
    'ставим автофильтр по столбцу J
          Range("A1").CurrentRegion.Autofilter 10, Criterij
    'копируем видимые строки в новую книгу
        ActiveSheet.Autofilter.Range.SpecialCells(xlCellTypeVisible).Copy WbN.Sheets("Лист1").Range("A1")
        ActiveSheet.Autofilter.Range.Autofilter
        
        WbN.Sheets("Лист1").Columns("A:J").AutoFit
        WbN.SaveAs ThisWorkbook.Path & "\" & iName & ".xls"
        WbN.Close SaveChanges:=True
    Next
Application.ScreenUpdating = True
End Sub
[/vba]

Дату в название файлов допишите сами. Удачи!

Автор - Kuzmich
Дата добавления - 27.08.2017 в 20:37
KuklP Дата: Воскресенье, 27.08.2017, 20:42 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Володь:
исходник будет состоять из 80 тис строк
а у автофильтра помнится, ограничение в ~8100 видимых областей. Поэтому сразу пошел другим путем. ;)
А еще ТС сохраняет листы со сводными в созданных книгах.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 27.08.2017, 20:44
 
Ответить
СообщениеВолодь:
исходник будет состоять из 80 тис строк
а у автофильтра помнится, ограничение в ~8100 видимых областей. Поэтому сразу пошел другим путем. ;)
А еще ТС сохраняет листы со сводными в созданных книгах.

Автор - KuklP
Дата добавления - 27.08.2017 в 20:42
Kuzmich Дата: Воскресенье, 27.08.2017, 21:14 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Сергей, привет!
У ТС 25 городов, может и не будет на каждый город больше ~8100 видимых областей
 
Ответить
СообщениеСергей, привет!
У ТС 25 городов, может и не будет на каждый город больше ~8100 видимых областей

Автор - Kuzmich
Дата добавления - 27.08.2017 в 21:14
Iurii Дата: Воскресенье, 27.08.2017, 21:25 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Извиняюсь.
Пост отредактировал, файл с поддержкой макросов добавил(надеюсь сделал это правильно).
Спасибо что откликнулись.
Буду изучать Ваши коды, спасибо!

П.С. Строк будет много, но в колонке J уникальных значений будет всего около 25. Может фильтр поможет, или я не в ту степь думаю?
Завтра попробую на тестовом файле в нем 13928 строк и 11 уникальных значений подразделений(J).
 
Ответить
СообщениеИзвиняюсь.
Пост отредактировал, файл с поддержкой макросов добавил(надеюсь сделал это правильно).
Спасибо что откликнулись.
Буду изучать Ваши коды, спасибо!

П.С. Строк будет много, но в колонке J уникальных значений будет всего около 25. Может фильтр поможет, или я не в ту степь думаю?
Завтра попробую на тестовом файле в нем 13928 строк и 11 уникальных значений подразделений(J).

Автор - Iurii
Дата добавления - 27.08.2017 в 21:25
Iurii Дата: Воскресенье, 27.08.2017, 21:30 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
У ТС 25 городов, может и не будет на каждый город больше ~8100 видимых областей


А если у одного города будет больше чем ~8100 строк макрос скопирует только первые ~8100 строк?
 
Ответить
Сообщение
У ТС 25 городов, может и не будет на каждый город больше ~8100 видимых областей


А если у одного города будет больше чем ~8100 строк макрос скопирует только первые ~8100 строк?

Автор - Iurii
Дата добавления - 27.08.2017 в 21:30
AndreTM Дата: Воскресенье, 27.08.2017, 21:40 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Можно поступить немного по-другому: делаем два макроса:
- Один будет просто читать список-исходник, и в текущей книге копировать строчки на листы с именами, соответствующими ключам (города из столбца J). Получим в текущей книге набор листов в количестве, соответствующем всем имеющимся городам, один проход по списку, никаких автофильтров и возможных ограничений :)
- Второй макрос будет просто уметь сохранять данные листа в файл, принципы задавания имени для этого файла - на ваше усмотрение, хоть передавайте параметром.

Единая "зеленая кнопка" - тоже простенький (третий) макрос: вызываем первый макрос, затем в цикле по нужным листам - вызываем второй.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеМожно поступить немного по-другому: делаем два макроса:
- Один будет просто читать список-исходник, и в текущей книге копировать строчки на листы с именами, соответствующими ключам (города из столбца J). Получим в текущей книге набор листов в количестве, соответствующем всем имеющимся городам, один проход по списку, никаких автофильтров и возможных ограничений :)
- Второй макрос будет просто уметь сохранять данные листа в файл, принципы задавания имени для этого файла - на ваше усмотрение, хоть передавайте параметром.

Единая "зеленая кнопка" - тоже простенький (третий) макрос: вызываем первый макрос, затем в цикле по нужным листам - вызываем второй.

Автор - AndreTM
Дата добавления - 27.08.2017 в 21:40
KuklP Дата: Воскресенье, 27.08.2017, 21:46 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Сомнительная простота, Андрей :D В №3 все делается одним макросом, не надо плодить листы в книге и сводные в книгах сохраняются, и файлы падают по пути в каталог источника.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСомнительная простота, Андрей :D В №3 все делается одним макросом, не надо плодить листы в книге и сводные в книгах сохраняются, и файлы падают по пути в каталог источника.

Автор - KuklP
Дата добавления - 27.08.2017 в 21:46
Iurii Дата: Понедельник, 28.08.2017, 13:28 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Огромное спасибо за помощь!
Макрос работает очень быстро (тестировал на файле из 14 тис. строк, создание 11 файлов занимает около 30 сек.)
Осталось заставить макрос обновить источник даных в сводных так как в сводной лезут пустые значения.
Думаю это не очень сложно :)
 
Ответить
СообщениеОгромное спасибо за помощь!
Макрос работает очень быстро (тестировал на файле из 14 тис. строк, создание 11 файлов занимает около 30 сек.)
Осталось заставить макрос обновить источник даных в сводных так как в сводной лезут пустые значения.
Думаю это не очень сложно :)

Автор - Iurii
Дата добавления - 28.08.2017 в 13:28
AndreTM Дата: Понедельник, 28.08.2017, 14:49 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Сергей, давай посмотрим :)
Кстати, моё предложение касалось в основном именно затрат времени на выборку нужных частей информации. Время создания файлов, или обновления сводных - это отдельная тема.

А теперь #3:

Заодно:


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеСергей, давай посмотрим :)
Кстати, моё предложение касалось в основном именно затрат времени на выборку нужных частей информации. Время создания файлов, или обновления сводных - это отдельная тема.

А теперь #3:

Заодно:

Автор - AndreTM
Дата добавления - 28.08.2017 в 14:49
Iurii Дата: Понедельник, 28.08.2017, 15:34 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Помогите еще разобраться с обновлением границ сводной.
Почти нашел решение,но не доконца :(


Спасибо!


Сообщение отредактировал Iurii - Понедельник, 28.08.2017, 15:35
 
Ответить
СообщениеПомогите еще разобраться с обновлением границ сводной.
Почти нашел решение,но не доконца :(


Спасибо!

Автор - Iurii
Дата добавления - 28.08.2017 в 15:34
Kuzmich Дата: Понедельник, 28.08.2017, 15:39 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Цитата
не знаю как выбрать диапазон с листа ИСХ с ячейки а1 по (numRows, numColumns)

[vba]
Код
Sheets("Исх").Range(Sheets("Исх").Cells(1,1), Sheets("Исх").Cells(numRows, numColumns))
[/vba]
 
Ответить
Сообщение
Цитата
не знаю как выбрать диапазон с листа ИСХ с ячейки а1 по (numRows, numColumns)

[vba]
Код
Sheets("Исх").Range(Sheets("Исх").Cells(1,1), Sheets("Исх").Cells(numRows, numColumns))
[/vba]

Автор - Kuzmich
Дата добавления - 28.08.2017 в 15:39
Iurii Дата: Понедельник, 28.08.2017, 15:55 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Цитата
Sheets("Исх").Range(Sheets("Исх").Cells(1,1), Sheets("Исх").Cells(numRows, numColumns))


Изменил код. Не обновляет границы.
Я так понимаю ошибка именно в этой строке:?

[vba]
Код
ActiveWorkbook.Sheets(List).PivotTables(pt).PivotTableWizard SourceType:=xlDatabase, SourceData:= _
Sheets("Исх").Range(Sheets("Исх").Cells(1, 1), Sheets("Исх").Cells(numRows, numColumns)).Address
[/vba]


Сообщение отредактировал Iurii - Понедельник, 28.08.2017, 15:55
 
Ответить
Сообщение
Цитата
Sheets("Исх").Range(Sheets("Исх").Cells(1,1), Sheets("Исх").Cells(numRows, numColumns))


Изменил код. Не обновляет границы.
Я так понимаю ошибка именно в этой строке:?

[vba]
Код
ActiveWorkbook.Sheets(List).PivotTables(pt).PivotTableWizard SourceType:=xlDatabase, SourceData:= _
Sheets("Исх").Range(Sheets("Исх").Cells(1, 1), Sheets("Исх").Cells(numRows, numColumns)).Address
[/vba]

Автор - Iurii
Дата добавления - 28.08.2017 в 15:55
KuklP Дата: Понедельник, 28.08.2017, 16:05 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Сомнительная простота, Андрей :D
и если судить по алгоритму в описании, то и по скорости преимущество очень сомнительно, и макросы существенно сложней. ИМХО. Впрочем основную часть времени занимает запись-чтение файлов с(на) диск. Так что небольшой разницей в скорости можно пренебречь. В №3 отбор уместился в 3 строки:
[vba]
Код
For m = 2 To UBound(a)
       If a(m, 10) = PodrNow Then n = n + 1: For k = 1 To 10: a(n, k) = a(m, k): Next
Next
[/vba]
Проще(а может только читабельней) только построчное копирование ячеек, что очень замедлит выполнение. :(


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 28.08.2017, 16:06
 
Ответить
Сообщение
Сомнительная простота, Андрей :D
и если судить по алгоритму в описании, то и по скорости преимущество очень сомнительно, и макросы существенно сложней. ИМХО. Впрочем основную часть времени занимает запись-чтение файлов с(на) диск. Так что небольшой разницей в скорости можно пренебречь. В №3 отбор уместился в 3 строки:
[vba]
Код
For m = 2 To UBound(a)
       If a(m, 10) = PodrNow Then n = n + 1: For k = 1 To 10: a(n, k) = a(m, k): Next
Next
[/vba]
Проще(а может только читабельней) только построчное копирование ячеек, что очень замедлит выполнение. :(

Автор - KuklP
Дата добавления - 28.08.2017 в 16:05
AndreTM Дата: Понедельник, 28.08.2017, 16:28 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Iurii, наверное, что-то вроде такого:
[vba]
Код
                Dim wsSh As Worksheet, PVTable As PivotTable
                For Each wsSh In .Worksheets
                    For Each PVTable In wsSh.PivotTables
                        PVTable.ChangePivotCache wsSh.Parent. _
                        PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsSh.Parent.Sheets("Исх").[a1].CurrentRegion, _
                        Version:=xlPivotTableVersion15)
                    Next PVTable
                Next wsSh
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеIurii, наверное, что-то вроде такого:
[vba]
Код
                Dim wsSh As Worksheet, PVTable As PivotTable
                For Each wsSh In .Worksheets
                    For Each PVTable In wsSh.PivotTables
                        PVTable.ChangePivotCache wsSh.Parent. _
                        PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsSh.Parent.Sheets("Исх").[a1].CurrentRegion, _
                        Version:=xlPivotTableVersion15)
                    Next PVTable
                Next wsSh
[/vba]

Автор - AndreTM
Дата добавления - 28.08.2017 в 16:28
AndreTM Дата: Понедельник, 28.08.2017, 16:36 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Сергей, все же останусь при своём мнении.

по скорости преимущество очень сомнительно
То есть исполнение NR итераций занимает столько же времени, что и исполнение R итераций??

макросы существенно сложней
Те же действия, вид в профиль. Макросы проще, а не сложней.

основную часть времени занимает запись-чтение файлов с(на) диск
Возьмем SSD-диск... что будет? Кроме того, я не уверен,что у ТС запись 11 файлов занимает 30 (ну, пусть 20) секунд :)

В №3 отбор уместился в 3 строки
Лукавить не надо, а? :) Восемь там строк, а не три. А если строго - то там три блока, причем к "строкам" они отношения не имеют. Да и забываешь указать что у тебя "эти три строчки" выполняются внутри другого цикла.
Кроме того, как количество строк кода может влиять на быстродействие? Влияет количество операций, да ещё и помноженное на количество итераций.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Понедельник, 28.08.2017, 16:42
 
Ответить
СообщениеСергей, все же останусь при своём мнении.

по скорости преимущество очень сомнительно
То есть исполнение NR итераций занимает столько же времени, что и исполнение R итераций??

макросы существенно сложней
Те же действия, вид в профиль. Макросы проще, а не сложней.

основную часть времени занимает запись-чтение файлов с(на) диск
Возьмем SSD-диск... что будет? Кроме того, я не уверен,что у ТС запись 11 файлов занимает 30 (ну, пусть 20) секунд :)

В №3 отбор уместился в 3 строки
Лукавить не надо, а? :) Восемь там строк, а не три. А если строго - то там три блока, причем к "строкам" они отношения не имеют. Да и забываешь указать что у тебя "эти три строчки" выполняются внутри другого цикла.
Кроме того, как количество строк кода может влиять на быстродействие? Влияет количество операций, да ещё и помноженное на количество итераций.

Автор - AndreTM
Дата добавления - 28.08.2017 в 16:36
KuklP Дата: Понедельник, 28.08.2017, 17:41 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
останусь при своём мнении.
Ну конечно, я ведь тоже писал: "ИМХО".
как количество строк кода может влиять на быстродействие?
а тут ты передергиваешь :)
Проще(а может только читабельней) только построчное копирование ячеек, что очень замедлит выполнение
во второй части имелось ввиду обращение к ячейкам листа а не к-во строк кода.
у ТС запись 11 файлов занимает 30 (ну, пусть 20) секунд
он так и пишет. Все остальное происходит в памяти практически мгновенно. И раздели ты макрос хоть на 20 "маленьких медвежат"(с), существенного прироста в скорости не получится. Практически все время затрачивается на чтение-запись диска.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
останусь при своём мнении.
Ну конечно, я ведь тоже писал: "ИМХО".
как количество строк кода может влиять на быстродействие?
а тут ты передергиваешь :)
Проще(а может только читабельней) только построчное копирование ячеек, что очень замедлит выполнение
во второй части имелось ввиду обращение к ячейкам листа а не к-во строк кода.
у ТС запись 11 файлов занимает 30 (ну, пусть 20) секунд
он так и пишет. Все остальное происходит в памяти практически мгновенно. И раздели ты макрос хоть на 20 "маленьких медвежат"(с), существенного прироста в скорости не получится. Практически все время затрачивается на чтение-запись диска.

Автор - KuklP
Дата добавления - 28.08.2017 в 17:41
Iurii Дата: Понедельник, 28.08.2017, 18:14 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, Спасибо работает. Границы сводной обновляет.
Но если воспользоваться фильтром в новой сводной выдает ошибку: "отчет сводной таблицы был сохранен без данных. Для обновления отчета используйте команду "обновить даные""

Ранее пользовался макросом только для обновления даных в сводной(но вылазили пустые ячейки в сводной) фильтр работал
[vba]
Код

For Each wsSh In .Worksheets
For Each PVTable In wsSh.PivotTables: PVTable.RefreshTable:
Next PVTable
Next wsSh
[/vba]

Пытаюсь добавить эти строки в Ваш код - все работает но фильт не работает .
Пробовал запускать эти коды по очереди - тобе безрезультатно.
Не подскажите в чем проблема?
Спасибо!


Сообщение отредактировал Iurii - Понедельник, 28.08.2017, 18:15
 
Ответить
СообщениеAndreTM, Спасибо работает. Границы сводной обновляет.
Но если воспользоваться фильтром в новой сводной выдает ошибку: "отчет сводной таблицы был сохранен без данных. Для обновления отчета используйте команду "обновить даные""

Ранее пользовался макросом только для обновления даных в сводной(но вылазили пустые ячейки в сводной) фильтр работал
[vba]
Код

For Each wsSh In .Worksheets
For Each PVTable In wsSh.PivotTables: PVTable.RefreshTable:
Next PVTable
Next wsSh
[/vba]

Пытаюсь добавить эти строки в Ваш код - все работает но фильт не работает .
Пробовал запускать эти коды по очереди - тобе безрезультатно.
Не подскажите в чем проблема?
Спасибо!

Автор - Iurii
Дата добавления - 28.08.2017 в 18:14
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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