Tip: andere talen zijn Google-Vertaald. Je kunt het English versie van deze link.
Log in
x
or
x
x
Registreren
x

or

Hoe maak ik nieuwe bladen voor elke rij in Excel?

Stel dat u een scoretabel met de naam van alle studenten in kolom A hebt. Nu wilt u nieuwe bladen maken op basis van deze namen in kolom A en per blad de unieke gegevens van een student bevatten. Of maak een nieuw blad voor elke rij op de tafel zonder de naam in kolom A te beschouwen. In dit artikel krijgt u methoden om dit te bereiken.

Maak nieuwe bladen voor elke rij met VBA-code

Maak nieuwe bladen voor elke rij met het hulpprogramma Split Data van Kutools voor Excel


Maak eenvoudig nieuwe bladen voor elke rij of op basis van de specifieke kolomwaarde in Excel:

Als je Kutools for Excel, het nut - Gegevens splitsen kan u helpen snel nieuwe werkbladen te maken op basis van specifieke coumn-waarden of nieuwe werkbladen voor elke rij in Excel te maken. Zie screenshot:

Kutools for Excel: met meer dan 200 handige Excel-add-ins, gratis om zonder beperking in 60-dagen te proberen. Download en gratis proef nu!

Tabblad Office Schakel bewerken en browsen met tabbladen in Office in en maak uw werk veel eenvoudiger ...
Kutools voor Excel - De beste Office-productiviteitstool lost de meeste van uw Excel-problemen op
  • Alles hergebruiken: Voeg de meest gebruikte of complexe formules, grafieken en al het andere toe aan uw favorieten en hergebruik ze snel in de toekomst.
  • Meer dan 20-tekstfuncties: Nummer uit tekststring halen; Een deel van de tekst extraheren of verwijderen; Nummers en valuta's omzetten in Engelse woorden ...
  • Tools samenvoegen: Meerdere werkmappen en bladen in één; Meerdere cellen / rijen / kolommen samenvoegen zonder gegevens te verliezen; Dubbele rijen en som samenvoegen ...
  • Split gereedschap: Gegevens splitsen in meerdere bladen op basis van waarde; Eén werkmap naar meerdere Excel-, PDF- of CSV-bestanden; Eén kolom naar meerdere kolommen ...
  • Plakken overslaan Verborgen / gefilterde rijen; Tel en som op achtergrondkleur; Maak een verzendlijst en Verzend e-mails op waarde van Cell...
  • Super filter: Maak geavanceerde filterschema's en pas deze toe op alle bladen; Soort per week, dag, frequentie en meer; filters door vetgedrukt, formules, commentaar ...
  • Meer dan 300 krachtige functies; Werkt met Office 2007-2019 en 365; Ondersteunt alle talen; Eenvoudig inzetbaar in bedrijf; Volledige functionaliteit 60-daagse gratis proefversie.

Maak nieuwe bladen voor elke rij met VBA-code


Met de volgende codes kunt u een nieuw blad maken op basis van kolomwaarden, of u kunt gewoon nieuwe werkbladen maken voor elke rij in Excel.

1. druk op anders + F11 toetsen tegelijkertijd om de Microsoft Visual Basic voor toepassingen venster.

2. In de Microsoft Visual Basic voor toepassingen venster klikt bijvoegsel > module. En plak dan de volgende code in de module venster.

VBA-code: maak een nieuw blad voor elke rij op basis van de kolom

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

Notes: A1: C1 is het titelbereik van uw tabel. U kunt het veranderen op basis van uw behoeften.

3. druk op F5 sleutel om de code uit te voeren, dan worden nieuwe werkbladen aangemaakt na alle werkbladen van de huidige werkmap zoals onder screenshot:

Als u direct nieuwe bladen voor elke rij wilt maken zonder rekening te houden met de kolomwaarde, kunt u de volgende code gebruiken.

VBA-code: maak direct een nieuw blad voor elke rij

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

Nadat de code is uitgevoerd, wordt elke rij in een actief werkblad in een nieuw werkblad geplaatst.

Notes: De koprij wordt ook in een nieuw blad geplaatst met deze VBA-code.


Maak nieuwe bladen voor elke rij met het hulpprogramma Split Data van Kutools voor Excel

Eigenlijk is de bovenstaande methode gecompliceerd en moeilijk te begrijpen. In deze sectie introduceren we u de Gegevens splitsen nut van Kutools for Excel.

Kutools for Excel : met meer dan 300 handige Excel invoegtoepassingen, gratis om te proberen zonder beperking in 60-dagen.

1. Selecteer de tabel die u moet gebruiken om nieuwe werkbladen te maken en klik vervolgens op Kutools Plus> Spit gegevens. Zie screenshot:

2. In de Gegevens splitsen in meerdere werkbladen dialoogvenster, ga als volgt te werk.

A. Voor het maken van nieuwe bladen op basis van de kolomwaarde:

1). Selecteer alstublieft de Specifieke kolom optie en geef een kolom op waarop u de gegevens wilt splitsen op basis van in de vervolgkeuzelijst;

2). Als u de werkbladen een naam wilt geven met kolomwaarden, selecteert u Waarden van kolom in de Reglement keuzelijst;

3). Klik op de OK knop. Zie screenshot:

B. Voor het direct maken van nieuwe bladen voor elke rij:

1). kiezen Vaste rijen optie, voer het nummer in 1 in de doos;

2). kiezen Rij nummers van de Reglement keuzelijst;

3). Klik op de OK knop. Zie screenshot:

een nieuwe werkmap wordt gemaakt met alle nieuwe bladen erin. Zie onderstaande screenshots.

Nieuwe bladen voor elke rij maken op basis van de kolomwaarde:

Nieuw blad maken voor elke rij zonder rekening te houden met de kolomwaarde:

Maak nieuwe bladen voor elke rij met het hulpprogramma Split Data van Kutools voor Excel

Kutools for Excel bevat meer dan handige Excel-gereedschappen van 300. Gratis om te proberen zonder beperking in 60-dagen. Download de gratis proefversie nu!


Kutools voor Excel - De beste Office-productiviteitstool Verhoog uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Coderen van cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula Bar (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken op gefilterd bereik...
  • Cellen / rijen / kolommen samenvoegen zonder gegevens te verliezen; Inhoud gesplitste cellen; Combineer dubbele rijen / kolommen... voorkomen dubbele cellen; Ranges vergelijken...
  • Selecteer Dupliceren of Uniek rijen; Selecteer Lege rijen (alle cellen zijn leeg); Super Find en Fuzzy Find in veel werkboeken; Willekeurig selecteren ...
  • Exacte kopie Meerdere cellen zonder formule-referentie te wijzigen; Automatisch referenties maken naar meerdere vellen; Voeg kogels toe, Selectievakjes en meer ...
  • extract Text, Tekst toevoegen, verwijderen op positie, Verwijder de spatie; Subtotalen voor paging maken en afdrukken; Converteren tussen cellen Inhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerde sortering per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Volledige functionaliteit 60-daagse gratis proefversie.
kte-tab 201905

Tabblad Office Brengt interface met tabbladen naar Office en maakt uw werk veel eenvoudiger

  • Bewerken en lezen met tabbladen inschakelen in Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en verlaagt dagelijks honderden muisklikken voor u!
Officetab onderaan
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    ComplianceHound · 7 months ago
    This is great code. Many thanks to brain-boxes at OfficeExtend !! Is there anyway this code could be slightly adapted to to create separate sheets for each *column* instead of row? I've attached a picture of what I'm trying to achieve. Is this possible? Kind regards.
  • To post as a guest, your comment is unpublished.
    Sam · 8 months ago
    Great code, but could I get some help if I my data is on column G instead of column A? what do I need to change to have the Column G data in different tab?

    Thanks
  • To post as a guest, your comment is unpublished.
    Michele · 10 months ago
    Hi, is there a way to keep the heading row on each new worksheet? (circled in red on my attachment)

    The code takes all the rows from my master worksheet and transfers them into new worksheets, which is great. But I want to keep my "master" header value (circled in red) at the top of each new worksheet. Thanks!



    I'm referring to this code from above:

    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
  • To post as a guest, your comment is unpublished.
    BK TAN · 1 years ago
    Hello, I think there is something useful here for my situation, but I'm able to to do VBA or script, hope you can help.
    I have a template w/ many cells to fill with data, and there will be a search key (non unique) that I would like to enter into the template. Based on the search key, the data is searched and corresponding data on the matched key is fetched and filled into the template. The filled template is saved into a new worksheet. There maybe more than 1 match entries. I need the script to continue search down the list, until all matches are picked, and the certain number of new worksheets created.
  • To post as a guest, your comment is unpublished.
    Beatriz · 1 years ago
    Hello I tried to use your code but I get an error
    Run-timeerror '1004':
    Application-defined or object-defined error
    I have no knowledge of VBA (or any technology for that matter) but if a press debug it highlights line 11 xRCount=xSht.Cells(xSht.Rows.Count,1). End(xIUp).Row
    I am working with a large file that has 127 columns and 337 rows (rows will vary columns won't) and it is a list with I'd numbers and their details.
    I did change the range as you noted but still doesn't work I'm using Excel 2010 could you please tell me how to make it work if possible
    Thank you
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Dear Beatriz,
      The code is updated with the problem solving. Please try it again. Thank you for your comment.
  • To post as a guest, your comment is unpublished.
    Sam · 1 years ago
    This code is is very helpful, and almost what i was looking for.
    But can it be adjusted such that there are two sheets -
    Sheet 1 is the Data - a table of data with Column A being the name
    Sheet 2 is a template, with numerous fields requiring filling
    What I was hoping is run a macro, which will
    1 Copy-paste the template, in the same file, name the sheet as the name in Cell A1
    2 Copy cell B1 then past to a selected field in the new template
    3 repeat along row 1 until empty
    4 then repeat for row 2 and each row until the end.
    Result is a file with x no. sheets all the same as the template, with all the fields filled in.
    I inherited a file which works the other way, extracting data from templates to a table, but cannot reverse it.....
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Dear Sam,
      Would be nice if you could attach your workbook here.
      You can upload your file with the below Upload files button.
  • To post as a guest, your comment is unpublished.
    Mark · 1 years ago
    This was extremely helpful, just what I was looking for. Thanks!
  • To post as a guest, your comment is unpublished.
    Joyce · 2 years ago
    Thank you for this!



    In the VBA code is there anyway to name the resultant sheets from the first and second column row data combined?



    so for your example sheet 2 would be auto named "linda 100"
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Dear Joyce,
      Thank you fr your comment! Hope the below VBA script can help you.

      Sub parse_data()
      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
      On Error Resume Next
      Application.ScreenUpdating = False
      Set xSht = ActiveSheet
      xRCount = xSht.UsedRange.End(xlDown).Row
      xTitle = "A1:B1"
      xTRrow = xSht.Range(xTitle).Row
      For I = 2 To xRCount
      Call xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
      Next
      Debug.Print xCol.Count
      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) & xSht.Cells(I + 1, 2))
      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 = True
      End Sub
  • To post as a guest, your comment is unpublished.
    Yaw · 2 years ago
    Thank you so much for posting this!!!! Worked like a charm.

    Can you explain how the first set of code works?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Dear Yaw,

      How do you mean "explain how the code work"? I am so sorry i can get your point.
  • To post as a guest, your comment is unpublished.
    Kumar · 3 years ago
    Hi there,

    I want to use my exel file template MyFormat to generate worksheets and name the worksheets by the data on the first column. The following VBA code is working ok to generate the worksheets as per MyFormat. But it is generating hundreds of blank sheets on normal excel templete too. Could some body please help me to stop generating excess blank sheets.

    Thanks
    Kumar

    Sub AddSheets()
    Dim cell As Excel.Range
    Dim wsWithSheetNames As Excel.Worksheet
    Dim wbToAddSheetsTo As Excel.Workbook

    Set wsWithSheetNames = ActiveSheet
    Set wbToAddSheetsTo = ActiveWorkbook
    For Each cell In wsWithSheetNames.Range("A2:A165")
    With wbToAddSheetsTo
    .Sheets.Add After:=ActiveSheet
    Sheets.Add Type:= _
    "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx"
    On Error Resume Next
    ActiveSheet.Name = cell.Value
    If Err.Number = 1004 Then
    Debug.Print cell.Value & " already used as a sheet name"
    End If
    On Error GoTo 0
    End With
    Next cell
    End Sub
    • To post as a guest, your comment is unpublished.
      Brandon · 1 years ago
      Worksheet Names must be less than or equal to thirty characters in length.
      Not very common knowledge, but otherwise the code will output a default blank "Sheet #" worksheet.

      Create a new worksheet that your parsing code will run through and reference the first column as follows:
      =IF(OR('Referenced Original'!B1<>"", LEN('Referenced Original'!B1)>30), LEFT('Referenced Original'!B1,30),'Referenced Original'!B1)


      Either copy over or reference the rest of the sheet as you may. Make sure the column is free of data validation restrictions if you have any problems referencing the other worksheet.
  • To post as a guest, your comment is unpublished.
    Kumar · 3 years ago
    Hi there,

    I want to create worksheets based on my template file Myformat and name them as per the first column data. I customized the VBA code as following, but it is generating too much blank sheets. Could you please help me to stop generating blank sheets.

    Thank you.
    Kumar

    Sub AddSheets()
    Dim cell As Excel.Range
    Dim wsWithSheetNames As Excel.Worksheet
    Dim wbToAddSheetsTo As Excel.Workbook

    Set wsWithSheetNames = ActiveSheet
    Set wbToAddSheetsTo = ActiveWorkbook
    For Each cell In wsWithSheetNames.Range("A2:A165")
    With wbToAddSheetsTo
    .Sheets.Add After:=ActiveSheet
    Sheets.Add Type:= _
    "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx"
    On Error Resume Next
    ActiveSheet.Name = cell.Value
    If Err.Number = 1004 Then
    Debug.Print cell.Value & " already used as a sheet name"
    End If
    On Error GoTo 0
    End With
    Next cell
    End Sub