Note: The other languages of the website are Google-translated. Back to English

Як створити нові аркуші для кожного рядка в Excel?

Припустимо, що у вас є таблиця оцінок з іменами всіх студентів у стовпці A. Тепер ви хочете створити нові аркуші на основі цих імен у стовпці A, і кожен аркуш містить унікальні дані студента. Або просто створіть новий аркуш лише для кожного рядка в таблиці, не беручи до уваги імена в стовпці A. У цьому відео ви отримаєте методи для цього.

Створіть нові аркуші для кожного рядка з кодом VBA
Створіть нові аркуші для кожного рядка за допомогою утиліти «Розділити дані» Kutools для Excel


Створіть нові аркуші для кожного рядка з кодом VBA

За допомогою наступних кодів ви можете створити новий аркуш на основі значень стовпців або просто створити нові аркуші для кожного рядка в Excel.

1. прес інший + F11 клавіші одночасно, щоб відкрити Microsoft Visual Basic для додатків вікна.

2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі. А потім вставте наступний код у Модулі вікна.

Код VBA: створити новий аркуш для кожного рядка на основі стовпця

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

примітки: A1: C1 - діапазон заголовків вашої таблиці. Ви можете змінити його відповідно до своїх потреб.

3. прес F5 клавішу для запуску коду, тоді нові аркуші створюються після всіх аркушів поточної книги, як показано на скріншоті нижче:

Якщо ви хочете безпосередньо створити нові аркуші для кожного рядка, не враховуючи значення стовпця, ви можете використовувати наступний код.

Код VBA: безпосередньо створіть новий аркуш для кожного рядка

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

Після запуску коду кожен рядок на активному аркуші буде розміщений на новому аркуші.

примітки: Рядок заголовка також буде розміщено на новому аркуші з цим кодом VBA.


Створіть нові аркуші для кожного рядка за допомогою утиліти «Розділити дані» Kutools для Excel

Насправді, вищезазначений метод є складним і важким для розуміння. У цьому розділі ми представляємо вам Розділити дані корисність Kutools для Excel.

Перед поданням заявки Kutools для Excel, будь ласка завантажте та встановіть його спочатку.

1. Виберіть таблицю, яку потрібно використовувати для створення нових аркушів, а потім клацніть Kutools Plus> Дані коси. Дивіться знімок екрана:

2 В Розділіть дані на кілька аркушів діалогове вікно, будь ласка, виконайте наступне

А. Для створення нових аркушів на основі значення стовпця:

1). Виберіть Конкретний стовпець параметр і вкажіть стовпець, за яким потрібно розділити дані, виходячи зі спадного списку;
2). Якщо ви хочете назвати робочі аркуші значеннями стовпців, виберіть Значення стовпця в Правила випадаючий список;
3). Клацніть на OK кнопку. Дивіться знімок екрана:

B. Для безпосереднього створення нових аркушів для кожного рядка:

1). Виберіть Фіксовані ряди , введіть номер 1 у коробку;
2). Виберіть Номери рядків від Правила випадаючий список;
3). Клацніть на OK кнопку. Дивіться знімок екрана:

створюється нова робоча книга з усіма новими аркушами всередині. Дивіться скріншоти нижче.

Створення нових аркушів для кожного рядка на основі значення стовпця:

Створення нового аркуша для кожного рядка без урахування значення стовпця:

  Якщо ви хочете отримати безкоштовну пробну версію (30-день) цієї утиліти, натисніть, щоб завантажити, а потім перейдіть до застосування операції, як описано вище.

Створіть нові аркуші для кожного рядка за допомогою утиліти «Розділити дані» Kutools для Excel


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2021 і 365. Підтримує всі мови. Легке розгортання на вашому підприємстві чи в організації. 30-денна безкоштовна пробна версія повних функцій. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (33)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт, я хочу створити робочі аркуші на основі мого файлу шаблону Myformat і назвати їх відповідно до даних першого стовпця. Я налаштував код VBA наступним чином, але він генерує забагато порожніх аркушів. Чи не могли б ви допомогти мені припинити створення чистих аркушів. Дякую. Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook для кожної клітинки в wsbToAddSheetsTo = ActiveWorkbook для кожної клітинки в wsbToAddSheetsTo As Excel.Workbook Set. Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" При помилці Відновити далі ActiveSheet.Name = cell.Value Якщо Err.Number = 2 Тоді Debug.Print cell.Value & " вже використовується як ім'я аркуша" End If On Error GoTo 165 End With Next cell End Sub
Цей коментар був мінімізований модератором на сайті
привіт,
Я завжди отримую 2 аркуші на кожен унікальний запис у рядку A. Маєте уявлення, чому? Також, наскільки важко було б додати загальну кількість рядків, створених створеним аркушем, до імені аркуша. Дуже дякую! Дайте мені знати, якщо ви приймаєте пожертви.
Цей коментар був мінімізований модератором на сайті
Привіт, я хочу використовувати свій шаблон файлу exel MyFormat для створення робочих аркушів та іменування аркушів за даними в першому стовпці. Наступний код VBA працює нормально для створення аркушів відповідно до MyFormat. Але він також створює сотні чистих аркушів у звичайному шаблоні Excel. Будь ласка, допоможіть мені припинити створювати зайві чисті аркуші. Спасибі Кумар Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Every cell (ActiveWorkbook For Every cell: In wsbNaAddSheets In wsbNaAddSheets) .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" При помилці Відновити Наступний ActiveSheet.Name = cell.Value Якщо Err.Number = 2 Потім Debug.Print cell.Value & " вже використовується як ім'я аркуша" End If On Error GoTo 165 End With Next cell End Sub
Цей коментар був мінімізований модератором на сайті
Довжина назв робочого аркуша має бути менше або дорівнювати тридцяти символам.
Не дуже загальновідомо, але в іншому випадку код виведе порожній аркуш «Аркуш №» за замовчуванням.

Створіть новий аркуш, через який буде виконуватися ваш код аналізу, і посилайтеся на перший стовпець таким чином:
=IF(АБО('Посилається оригінал'!B1<>"", LEN('Посилається оригінал'!B1)>30), ЛІВО('Посилається оригінал'!B1,30),'Посилається оригінал'!B1)


Скопіюйте або посилайтеся на решту аркуша, як можете. Переконайтеся, що стовпець не містить обмежень перевірки даних, якщо у вас виникнуть проблеми з посиланням на інший робочий аркуш.
Цей коментар був мінімізований модератором на сайті
Щиро дякую, що опублікували це!!!! Спрацював як шарм. Чи можете ви пояснити, як працює перший набір коду?
Цей коментар був мінімізований модератором на сайті
Дякуємо Вам за це!



Чи можна в коді VBA все-таки назвати результуючі аркуші з об’єднаних даних рядка першого та другого стовпців?



тому для вашого прикладу аркуш 2 буде автоматично називатися "linda 100"
Цей коментар був мінімізований модератором на сайті
Шановна Джойс,
Дякую за ваш коментар! Сподіваюся, наведений нижче сценарій VBA може вам допомогти.

Підрозбір даних()
Dim xRCount As Long
Dim xSht як аркуш
Dim xNSht Як аркуш
Dim I As Long
Dim xTRrow як ціле число
Dim xCol як нова колекція
Dim xTitle як рядок
On Error Resume Next
Application.ScreenUpdating = Невірний
Встановіть xSht = ActiveSheet
xRCount = xSht.UsedRange.End(xlDown).Рядок
xTitle = "A1:B1"
xTRrow = xSht.Range(xTitle).Row
Для I = 2 До xRCount
Викликати xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Далі
Debug.Print xCol.Count
Для I = 1 До xCol.Count
Викликати xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Встановіть xNSht = Нічого
Встановіть xNSht = Worksheets(CStr(xCol.Item(I)))
Якщо xNSht - це нічого, то
Встановіть xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Ще
xNSht.Move , Sheets(Sheets.Count)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Далі
xSht.AutoFilterMode = False
xSht.Активувати
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Це було надзвичайно корисно, саме те, що я шукав. Спасибі!
Цей коментар був мінімізований модератором на сайті
Цей код дуже корисний і майже те, що я шукав.
Але чи можна налаштувати так, щоб було два аркуші -
Аркуш 1 – це дані – таблиця даних, іменем якої є стовпець А
Лист 2 є шаблоном, з численними полями, які потребують заповнення
Я сподівався запустити макрос, який буде
1 Скопіюйте та вставте шаблон у той самий файл, назвіть аркуш як ім’я в клітинці A1
2 Скопіюйте клітинку B1, а потім вставте її у вибране поле нового шаблону
3 повторюйте вздовж 1 ряду до порожнього ряду
4 потім повторіть для 2 ряду і кожного ряду до кінця.
Результатом є файл з номером x. всі аркуші такі ж, як і шаблон, із заповненими всіма полями.
Я успадкував файл, який працює в інший спосіб, витягуючи дані з шаблонів у таблицю, але не можу повернути його назад.....
Цей коментар був мінімізований модератором на сайті
Шановний Семе,
Було б добре, якби ви могли прикріпити сюди свою робочу книжку.
Ви можете завантажити свій файл за допомогою кнопки «Завантажити файли» нижче.
Цей коментар був мінімізований модератором на сайті
Привіт, я намагався використати ваш код, але отримую помилку
Помилка часу виконання "1004":
Помилка, визначена програмою або об’єктом
Я не знаю VBA (або будь-якої технології, якщо на те пішло), але під час налагодження в пресі виділяється рядок 11 xRCount=xSht.Cells(xSht.Rows.Count,1). Кінець(xIUp).Ряд
Я працюю з великим файлом, який має 127 стовпців і 337 рядків (рядки будуть змінюватися, стовпці не будуть змінюватися), і це список із номерами Id та їх деталями.
Я змінив діапазон, як ви зазначили, але все одно не працює. Я використовую Excel 2010, чи не могли б ви сказати мені, як це зробити, якщо можливо
Дякую
Цей коментар був мінімізований модератором на сайті
Шановна Беатріс,
Код оновлюється разом із вирішенням проблеми. Будь ласка, спробуйте ще раз. Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Привіт, я думаю, що тут є щось корисне для моєї ситуації, але я можу зробити VBA або сценарій, сподіваюся, ви можете допомогти.
У мене є шаблон з багатьма клітинками для заповнення даними, і буде ключ пошуку (неунікальний), який я хотів би ввести в шаблон. На основі ключа пошуку здійснюється пошук даних, а відповідні дані про відповідний ключ витягуються та заповнюються в шаблон. Заповнений шаблон зберігається на новому аркуші. Можливо, більше 1 запису збігу. Мені потрібен сценарій, щоб продовжити пошук у списку, доки не буде вибрано всі збіги та не буде створено певну кількість нових аркушів.
Цей коментар був мінімізований модератором на сайті
Привіт, чи є спосіб зберегти рядок заголовка на кожному новому робочому аркуші? (обведено червоним кружком на моєму вкладенні)

Код бере всі рядки з мого основного аркуша та переносить їх на нові аркуші, що чудово. Але я хочу, щоб моє "головне" значення заголовка (обведене червоним) у верхній частині кожного нового робочого аркуша. Спасибі!



Я маю на увазі цей код зверху:

Підрядок до аркуша()
Dim xRow As Long
Dim I As Long
За допомогою ActiveSheet
xRow = .Range("A" & Rows.Count).End(xlUp).Row
Для I = 1 до xRow
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row" & I
.Rows(I).Copy Sheets("Row " & I).Range("A1")
Далі я
Кінець з
End Sub
Цей коментар був мінімізований модератором на сайті
Чудовий код, але чи можу я отримати допомогу, якщо мої дані знаходяться в стовпці G замість стовпця A? що мені потрібно змінити, щоб дані стовпця G були на іншій вкладці?

Дякую
Цей коментар був мінімізований модератором на сайті
Це чудовий код. Велике спасибі брейн-боксів у OfficeExtend !! Чи все-таки цей код можна трохи адаптувати, щоб створити окремі аркуші для кожного *стовпця* замість рядка? Я додав фото того, чого я намагаюся досягти. Це можливо? З повагою.
Цей коментар був мінімізований модератором на сайті
Хороший день,
Я не бачив твого зображення тут.
Цей коментар був мінімізований модератором на сайті
Привіт, як змінити код, якщо моє поле імені знаходиться в стовпці C
Цей коментар був мінімізований модератором на сайті
Привіт, Абдул Басіт!
Наведений нижче код VBA може допомогти вам. Будь ласка, спробуйте.
У рядку: xCName = "3", 3 вказує номер стовпця (тут стовпець C) в Excel. Ви можете змінити його на будь-який номер стовпця, якщо вам потрібно.

Підрозбір даних()
'Оновлення до Extendoffice 2018/3/2
Dim xRCount As Long
Dim xSht як аркуш
Dim xNSht Як аркуш
Dim I As Long
Dim xTRrow як ціле число
Dim xCol як нова колекція
Dim xTitle як рядок
Dim xSUpdate як Boolean
Dim xCName як ціле число
Dim xTA, xRA, xSRg1 як рядок
Встановіть xSht = ActiveSheet
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitle = "A1:C1"
xCName = "3" 'Змініть це число на номер стовпця, на основі якого ви створюватимете нові аркуші
xTRrow = xSht.Range(xTitle).Cells(1).Row
Для I = 2 До xRCount
Викликати xCol.Add(xSht.Cells(I, xCName).Text, xSht.Cells(I, xCName).Text)
Далі
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = Невірний
xSRg = xSht.Cells(1, xCNName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Для I = 1 До xCol.Count
Викликати xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Встановіть xNSht = Нічого
Встановіть xNSht = Worksheets(CStr(xCol.Item(I)))
Якщо xNSht - це нічого, то
Встановіть xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I))
Ще
xNSht.Move , Sheets(Sheets.Count)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Далі
xSht.AutoFilterMode = False
xSht.Активувати
Application.ScreenUpdating = xSUpdate
End Sub
Цей коментар був мінімізований модератором на сайті
Класний код VBA, щоб зробити трюк.

Як я можу змінити його, щоб не копіювати перший стовпець? А назву стовпця видалити?

привіт
Цей коментар був мінімізований модератором на сайті
Будь ласка, чи можу я отримати довідку про те, як автоматично називати аркуші за допомогою певного стовпця. Це для рядка до аркуша VBA. Дивись нижче

Підрядок до аркуша()

Dim xRow As Long

Dim I As Long

За допомогою ActiveSheet

xRow = .Range("A" & Rows.Count).End(xlUp).Row

Для I = 1 до xRow

Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row" & I

.Rows(I).Copy Sheets("Row " & I).Range("A1")

Далі я

Кінець з

End Sub
Цей коментар був мінімізований модератором на сайті
Неважливо, це були приховані пробіли. Я використав функцію TRIM і очистив її. Наявність кількості рядків (кількість рядків дійсно, тому рядки -1 перед аркушем було б дивовижним)
Цей коментар був мінімізований модератором на сайті
Як посилатися на використання коду вище (кредит)? Чи можна змінити код?
Цей коментар був мінімізований модератором на сайті
Привіт, це відкрита комунікаційна платформа. Код дозволено посилатися та змінювати.
Цей коментар був мінімізований модератором на сайті
Нана
86
2
Цей коментар був мінімізований модератором на сайті
Привіт! Я щойно використав цей код, і він спрацював! На додаток до створення нового аркуша для кожного запису, я хочу перенести його на стовпці і не можу це зрозуміти. Отже, для наведеного вище прикладу вихід для Nana буде виглядати так: Назва НанаРахунок 86Ні. 2
Цей коментар був мінімізований модератором на сайті
Привіт, використовував цей код і працював, але якщо я хочу вибрати більше одного рядка в заголовку, що буде змінено в коді? У мене є кілька рядків на аркуші, які я хочу на кожному аркуші.
Цей коментар був мінімізований модератором на сайті
Привіт, ти зрозумів як?
Цей коментар був мінімізований модератором на сайті
Привіт, чи є код, який додавав би лише 1 новий аркуш при кожному запуску макросу, наприклад, 1-й раз, коли новий аркуш буде називатися вмістом комірки A1, 2-й раз, коли макрос запускався, новий аркуш буде називатися на вміст А2 і т. д. в очікуванні дякую
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL