TGViewer
Нескучная семантика с Карлиной Натальей Нескучная семантика с Карлиной Натальей @n_semantika · 582 subscribers
Post #215 685
Порубить помельче
Скрипт для разбивки списков на части

Часто в своей работе встречаю, что сервисы принимают определенное количество фраз для обработки. Так или иначе, ограничения есть у всех под разные инструменты. Обычно использую для таких задач скрипт в Excel. Просто и со вкусом. Скрипт создаст удобное окошко для ввода числа для нарезки, а затем аккуратно распределит данные по новым листам.

Как это работает:
✅ Вы запускаете макрос.
✅ Появляется модальное окно, где вы вводите, по сколько строк нужно «нарезать» данные.
✅ Скрипт берет данные из столбца A активного листа.
✅ Создает новые листы сразу после текущего и копирует туда блоки данных.
Исходный лист остается нетронутым.

Сам код:

Sub SplitRowsToNewSheets()
Dim wsSource As Worksheet
Dim lastRow As Long
Dim rowsPerSheet As Variant
Dim startRow As Long, endRow As Long
Dim i As Long
Dim newSheet As Worksheet
Dim sheetCounter As Integer

Set wsSource = ActiveSheet

' Находим последнюю заполненную строку в столбце A
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row

' Выводим модальное окно (InputBox)
rowsPerSheet = InputBox("Введите количество строк для каждого листа:", "Разбивка строк", 100)

' Проверка: если нажали Отмена или ввели не число
If rowsPerSheet = "" Or Not IsNumeric(rowsPerSheet) Then Exit Sub
rowsPerSheet = CLng(rowsPerSheet)
If rowsPerSheet <= 0 Then Exit Sub

' Отключаем обновление экрана для скорости
Application.ScreenUpdating = False

sheetCounter = 1
startRow = 1 ' Если есть шапка, можно поставить 2

Do While startRow <= lastRow
endRow = startRow + rowsPerSheet - 1
If endRow > lastRow Then endRow = lastRow

' Создаем новый лист ПОСЛЕ текущего или после предыдущего созданного
Set newSheet = Sheets.Add(After:=Sheets(wsSource.Index + sheetCounter - 1))
newSheet.Name = "Часть " & sheetCounter

' Копируем данные
wsSource.Rows(startRow & ":" & endRow).Copy Destination:=newSheet.Range("A1")

' Переходим к следующему блоку
startRow = endRow + 1
sheetCounter = sheetCounter + 1
Loop

wsSource.Activate
Application.ScreenUpdating = True

MsgBox "Готово! Данные разбиты на " & (sheetCounter - 1) & " лист(ов).", vbInformation
End Sub


#чеклисты_списки_нс
  • 🔥 14
More from @n_semantika
  1. Sep 21, 2026У кого как, а у меня всё через одно место Через семантику, конечно. Анализировала нишу, за…
  2. Sep 19, 2026Вот, и поговорили... 🤣🤣🤣🤣 При повторном запросе мелькало слово "Думаю". Чем, интересно…
  3. Sep 8, 2026Свою целевую аудиторию нужно понимать! Учимся у лучших 😂
  4. Aug 19, 2026Семантическое ядро - это структура сайта? В том числе, но не только. Вопрос пришел: Подска…
  5. Jul 31, 2026Улетела, но обещала вернуться Забыла написать ) Вернулась. Отлично полетала. Позже расскаж…
  6. Jun 22, 2026Улетела в отпуск на неделю Буду совсем без связи.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →