Przejdź do głównej zawartości

Jak utworzyć nowe arkusze dla każdego wiersza w programie Excel?

Przypuśćmy, że masz tabelę wyników z nazwiskami wszystkich uczniów w kolumnie A. Teraz chcesz utworzyć nowe arkusze na podstawie tych nazwisk w kolumnie A, a każdy arkusz zawiera unikalne dane ucznia. Lub po prostu utwórz nowy arkusz tylko dla każdego wiersza w tabeli bez uwzględniania nazw w kolumnie A. W tym filmie dowiesz się, jak to osiągnąć.

Utwórz nowe arkusze dla każdego wiersza z kodem VBA
Utwórz nowe arkusze dla każdego wiersza za pomocą narzędzia Podziel dane w Kutools for Excel


Utwórz nowe arkusze dla każdego wiersza z kodem VBA

Za pomocą poniższych kodów możesz utworzyć nowy arkusz na podstawie wartości kolumn lub po prostu utworzyć nowe arkusze dla każdego wiersza w programie Excel.

1. naciśnij inny + F11 klawisze jednocześnie, aby otworzyć Microsoft Visual Basic for Applications okno.

2. w Microsoft Visual Basic for Applications okno, kliknij wstawka > Moduł. A następnie wklej następujący kod do pliku Moduł okno.

Kod VBA: utwórz nowy arkusz dla każdego wiersza na podstawie kolumny

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

Note: A1: C1 to zakres tytułów twojej tabeli. Możesz to zmienić w zależności od swoich potrzeb.

3. naciśnij F5 klucz do uruchomienia kodu, nowe arkusze robocze są tworzone po wszystkich arkuszach roboczych bieżącego skoroszytu, jak na poniższym zrzucie ekranu:

Jeśli chcesz bezpośrednio utworzyć nowe arkusze dla każdego wiersza bez uwzględniania wartości kolumny, możesz użyć następującego kodu.

Kod VBA: bezpośrednio utwórz nowy arkusz dla każdego wiersza

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

Po uruchomieniu kodu każdy wiersz aktywnego arkusza zostanie umieszczony w nowym arkuszu.

Note: Wiersz nagłówka zostanie również umieszczony w nowym arkuszu z tym kodem VBA.


Utwórz nowe arkusze dla każdego wiersza za pomocą narzędzia Podziel dane w Kutools for Excel

W rzeczywistości powyższa metoda jest skomplikowana i trudna do zrozumienia. W tej sekcji przedstawiamy Podziel dane użyteczność Kutools dla programu Excel.

Przed złożeniem wniosku Kutools dla programu ExcelProszę pobierz i zainstaluj najpierw.

1. Wybierz tabelę, której chcesz użyć do tworzenia nowych arkuszy, a następnie kliknij Kutools Plus> Pluj dane. Zobacz zrzut ekranu:

2. w Podziel dane na wiele arkuszy roboczych w oknie dialogowym, wykonaj następujące czynności.

A. Do tworzenia nowych arkuszy na podstawie wartości kolumny:

1). Proszę wybrać Konkretna kolumna opcję i określ kolumnę, na podstawie której chcesz podzielić dane na liście rozwijanej;
2). Jeśli chcesz nazwać arkusze z wartościami kolumn, wybierz Wartości kolumny Zasady Lista rozwijana;
3). Kliknij OK przycisk. Zobacz zrzut ekranu:

B. Aby bezpośrednio tworzyć nowe arkusze dla każdego wiersza:

1). Wybierz Naprawiono rzędy opcję wprowadź numer 1 do pudełka;
2). Wybierz Numery wierszy z Zasady Lista rozwijana;
3). Kliknij OK przycisk. Zobacz zrzut ekranu:

tworzony jest nowy skoroszyt zawierający wszystkie nowe arkusze. Zobacz zrzuty ekranu poniżej.

Tworzenie nowych arkuszy dla każdego wiersza na podstawie wartości kolumny:

Tworzenie nowego arkusza dla każdego wiersza bez uwzględnienia wartości kolumny:

  Jeśli chcesz mieć bezpłatną wersję próbną (30 dni) tego narzędzia, kliknij, aby go pobrać, a następnie przejdź do wykonania operacji zgodnie z powyższymi krokami.

Utwórz nowe arkusze dla każdego wiersza za pomocą narzędzia Podziel dane w Kutools for Excel

Najlepsze narzędzia biurowe

🤖 Pomocnik AI Kutools: Zrewolucjonizuj analizę danych w oparciu o: Inteligentne wykonanie   |  Wygeneruj kod  |  Twórz niestandardowe formuły  |  Analizuj dane i generuj wykresy  |  Wywołaj funkcje Kutools...
Popularne funkcje: Znajdź, wyróżnij lub zidentyfikuj duplikaty   |  Usuń puste wiersze   |  Łącz kolumny lub komórki bez utraty danych   |   Okrągły bez wzoru ...
Super wyszukiwanie: Wiele kryteriów VLookup    Wiele wartości VLookup  |   Przeglądanie pionowe na wielu arkuszach   |   Wyszukiwanie rozmyte ....
Zaawansowana lista rozwijana: Szybko twórz listę rozwijaną   |  Zależna lista rozwijana   |  Lista rozwijana wielokrotnego wyboru ....
Menedżer kolumn: Dodaj określoną liczbę kolumn  |  Przesuń kolumny  |  Przełącz stan widoczności ukrytych kolumn  |  Porównaj zakresy i kolumny ...
Polecane funkcje: Fokus siatki   |  Widok projektu   |   Duży pasek formuły    Menedżer skoroszytów i arkuszy   |  Biblioteka zasobów (Automatyczny tekst)   |  Selektor dat   |  Połącz arkusze   |  Szyfruj/odszyfruj komórki    Wysyłaj e-maile według listy   |  Super filtr   |   Specjalny filtr (filtruj pogrubienie/kursywa/przekreślenie...) ...
15 najlepszych zestawów narzędzi12 Tekst Tools (Dodaj tekst, Usuń znaki, ...)   |   50 + Wykres rodzaje (Wykres Gantta, ...)   |   40+ Praktyczne Wzory (Oblicz wiek na podstawie urodzin, ...)   |   19 Wprowadzenie Tools (Wstaw kod QR, Wstaw obraz ze ścieżki, ...)   |   12 Konwersja Tools (Liczby na słowa, Przeliczanie walut, ...)   |   7 Połącz i podziel Tools (Zaawansowane wiersze łączenia, Podział komórki, ...)   |   ... i więcej

Zwiększ swoje umiejętności Excela dzięki Kutools for Excel i doświadcz wydajności jak nigdy dotąd. Kutools dla programu Excel oferuje ponad 300 zaawansowanych funkcji zwiększających produktywność i oszczędzających czas.  Kliknij tutaj, aby uzyskać funkcję, której najbardziej potrzebujesz...

Opis


Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
Comments (33)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
HI, Thanks for this wonder-full code, Can we get dynamic sheet, means if i update data in respective sheet it will get updated in main sheet.
This comment was minimized by the moderator on the site
Hi vikas chandra,
I can't fix this problem. Sorry about that.
This comment was minimized by the moderator on the site
Hi, I have a problem about title, the title range of my table is A1:AI2, when I changed the code like that it doesn't work.

***Note: A1:C1 is the title range of your table. You can change it based on your needs.***
This comment was minimized by the moderator on the site
Hello, thanks so much for this. I'm looking to modify the macro such that it will create a sheet for each row of a column and within each sheet have a function (average) that I can populate data into and in turn have the outcome linked back into the original sheet. Is this possible? I can try to clarify further if this doesn't make sense or is ambiguous.
This comment was minimized by the moderator on the site
Hi, is there a code which would add only 1 new sheet each time the macro is run, eg 1st time the new sheet would be named on the contents of cell A1, 2nd time the macro was run the new sheet would be named on the contents of A2 etc. thanks in anticipation
This comment was minimized by the moderator on the site
Hello, used this code and worked, but If I want select the more then one rows in header, what will be change in the code ? I have multiple lines in the sheet which I want in every sheet.
This comment was minimized by the moderator on the site
Hello, did you figured out how?
This comment was minimized by the moderator on the site
Hello! I just used this code and it worked! In addition to creating a new sheet for each entry, I want to transpose it to columns and can't figure it out. So for the above example, the output for Nana would look like this - Name NanaScore 86No. 2
This comment was minimized by the moderator on the site
<p> Nana
86
2</p>
This comment was minimized by the moderator on the site
How to reference the use of the code above (credit) ? Is it possible to modify the code ?
This comment was minimized by the moderator on the site
Hi, this is an open communication platform. The code is allowed to reference and modify.
This comment was minimized by the moderator on the site
Nevermind it was hidden trailing spaces. I used the TRIM feature and cleaned it up. Having a row count (line count really so rows -1 prepended to the sheet would be amazing)
This comment was minimized by the moderator on the site
Please can i get help on how to automatically name the sheets using a particular column. This is for the row to sheet VBA. See below

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
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations