Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
Excel

Разбить большое количество строк (более 15000) на количество до 990 с переносом на новые листы

14.09.2020, 12:44. Показов 2341. Ответов 28

Студворк — интернет-сервис помощи студентам
Нужна помощь в написании макроса для следующей ситуации:имеется файл, в котором более 15000 строк с различной информацией. Необходимо, чтобы эти строки последовательно делились на количество равное 990 и переносились на новые листы в этой же книге. спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2020, 12:44
Ответы с готовыми решениями:

Разбить большое количество колонок на датасеты
В одном гриде должно отображаться где то 70 колонок причем все они должны отображаться одновременно это единый электронный документ, однако...

Большое количество строк
Добрый день, столкнулся с задачей где нужно обработать большое количество cтрочек, в каждой из которых по 3 слова, каким образом мне...

Удалить большое количество строк
Доброго времени суток! Существует база на 80 гб с огромным количеством строк и десятком связанных между собой таблиц (во вложении)....

28
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
14.09.2020, 17:48
[nick]inga2003,
Привет.
Будем иметь ввиду, что данные начинаются с ячейки "А1" на 1-ом листе
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub MMM()
Application.ScreenUpdating = False
    With ThisWorkbook
        With Sheets(1)
             Set r = .Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
             LR = r.Row
             If LR Mod 990 = 0 Then N = LR / 990 Else N = Int(LR / 990) + 1
             ARR0 = Range(.Cells(1, 1), r).Value
        End With
              For X = 1 To N
                        ReDim ARR1(1 To 990, 1 To UBound(ARR0, 2))
                            For i = 1 To 990
                            On Error Resume Next
                                    For j = 1 To UBound(ARR0, 2)
                                      ARR1(i, j) = ARR0(i + (X - 1) * 990, j)
                                    Next
                            Next
                        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = CStr(X)
                        .ActiveSheet.Range("A1").Resize(990, UBound(ARR0, 2)).Value = ARR1
             Next
        End With
 Application.ScreenUpdating = True
MsgBox ("Job Complete")
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
14.09.2020, 18:09
Лучший ответ Сообщение было отмечено dzug как решение

Решение

Вообще-то из модуля листа работает и так:
Visual Basic
1
2
3
4
5
6
Sub tt()
    Dim i&
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 990
        Rows(i).Resize(990).Copy Sheets.Add.Cells(1)
    Next
End Sub
1
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
15.09.2020, 08:59
Hugo121,
Sorry.Тормознул...
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
15.09.2020, 09:01
Единственное что в моём коде не совпадает с заявленным заданием - нет переноса
Ну это такое...
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
16.09.2020, 09:47  [ТС]
Добрый день. Спасибо за помощь. А можно внести изменение: данные делить с ячейки (А2), и не первый лист, а Лист 3 (GetFile).
Макет в вложении.
Спасибо
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
16.09.2020, 10:07
inga2003,
Нет вложенного файла
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
16.09.2020, 10:27  [ТС]
Не могу загрузить файл, пишет большого формата
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
16.09.2020, 11:02
inga2003,
Заархивируйте сначала и выложите Zip File.

Добавлено через 28 минут
inga2003,
Попробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub MMM()
Application.ScreenUpdating = False
    With ThisWorkbook
        With Sheets("GetFile")
             Set r = .Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
             LR = r.Row
             If LR Mod 990 = 0 Then N = LR / 990 Else N = Int(LR / 990) + 1
             ARR0 = Range(.Cells(1, 1), r).Value
        End With
              For X = 1 To N
                        ReDim ARR1(1 To 990, 1 To UBound(ARR0, 2))
                            For i = 1 To 990
                            On Error Resume Next
                                    For j = 1 To UBound(ARR0, 2)
                                      ARR1(i, j) = ARR0(i + (X - 1) * 990, j)
                                    Next
                            Next
                        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = CStr(X)
                        .ActiveSheet.Range("A2").Resize(990, UBound(ARR0, 2)).Value = ARR1
             Next
        End With
 Application.ScreenUpdating = True
MsgBox ("Job Complete")
End Sub
Добавлено через 55 секунд
Изменения в строчках 4 и 19
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
16.09.2020, 11:25  [ТС]
файл в приложении
Вложения
Тип файла: rar мегатоп 76 поступление РФ шаблон.rar (3.76 Мб, 2 просмотров)
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
16.09.2020, 14:07
inga2003,
В ячейке "В2" нажмите кнопочку.
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
17.09.2020, 12:02  [ТС]
А файл вы прикрепляли????
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
17.09.2020, 13:14
inga2003,
Цитата Сообщение от inga2003 Посмотреть сообщение
А файл вы прикрепляли????
Вложения
Тип файла: rar ВВВ.rar (5.36 Мб, 2 просмотров)
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
17.09.2020, 14:30  [ТС]
спасибо, вам.
подскажите, а возможно сделать так, что бы данные делились на отдельные листы по дате. Примерно так: как только дата поменялась, данные пошли на следующий лист. В дате может быть как 5 строк, так и 200. Файл прилагаю. спасибо
Вложения
Тип файла: rar Таблица_170920.rar (205.5 Кб, 6 просмотров)
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
18.09.2020, 00:24
inga2003,
Не зипуйте этот файлюВыходят кракозябры.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.09.2020, 08:34
Нет там кракозябров:
КодТовара;Номенклатура;НаименованиеТовар а;НаименованиеДляСтатистики;СтранаПроисх ожденияКод;СтаранаОтправленияКод;Старана ОтправленияКодАдм;СтаранаНазначенияКод;С таранаНазначенияКодАдм;ДатаОтгрузкиПосту пления;ВесБрутто;ВесНетто;ВесНеттоБезУпа ковки;ФактурнаяСтоимость;КодВалюты;Колич ество;Договор;Спецификация;ДатаСпецифика ции;ЦМР;ДатаЦМР;НомерГТД;СерияТН;НомерТН ;ДатаДоговора

Добавлено через 39 секунд
А по вопросу - в этом файле не может быть листов!

Добавлено через 4 минуты
Если с этим(форматом файла) разберётесь - вопрос по какой из дат собираетесь фильтровать?
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
18.09.2020, 08:41  [ТС]
исправила неполадки. файл а приложении
Вложения
Тип файла: xls Таблица_170920 + 111.xls (56.5 Кб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
18.09.2020, 08:45  [ТС]
Файл изменила. Сортировать по столбцу Дата отгрузки / Поступления. .
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.09.2020, 08:49
На практике с каким файлом работать будете? С csv или xls? А в xls точно всегда всё влезет?
КодТовара при импорте точно не попортили?
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 12
18.09.2020, 08:59  [ТС]
Из базы вытягиваю cvs, но буду "причесывать" в xls. Код товара он не попорчен, я его все равно проверяю глазками. И все остальное тоже, все норм. И мне надо сначало разбить по датам по листам, а потом я объединяю позиции по кодам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2020, 08:59
Помогаю со студенческими работами здесь

Изменить большое количество (4кк) строк
1.Есть столбец datetime надо его перевести в юникс время. Как это сделать? С этим разобрался $query1 = 'ALTER TABLE `pokazanie`...

Максимально быстро записать большое количество строк SQLite
Приветствую всех. Думаю из заголовка понятно в чём вопрос как максимально эффективно и быстро записать в таблицу базы данных SQLite большое...

Как удалить большое количество (56тыс) строк из таблицы?
Добрый день Подскажите пожалуйста насколько возможно быстрый способ удалить 56тыс строк из таблицы по условию? DELETE FROM...

Количество дней, когда выпало самое большое количество осадков
В массиве хранится информация о количестве осадков,выпавших за каждый день октября. определить количество дней, когда выпало самое большое...

Разбить текстовый файл на определенное количество строк
Построчно читаю текстовый файл, обрабатываю эту строку (добавляю теги к некоторым словам) и записываю ее в html страницу. Есть переменная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru