Passer au contenu principal

Comment créer de nouvelles feuilles pour chaque ligne dans Excel?

Supposons que vous ayez un tableau de scores avec le nom de tous les étudiants dans la colonne A. Vous souhaitez maintenant créer de nouvelles feuilles basées sur ces noms dans la colonne A, et faire par feuille contient les données d'un étudiant unique. Ou créez simplement une nouvelle feuille pour chaque ligne du tableau sans tenir compte des noms dans la colonne A. Dans cette vidéo, vous obtiendrez des méthodes pour y parvenir.

Créer de nouvelles feuilles pour chaque ligne avec le code VBA
Créez de nouvelles feuilles pour chaque ligne avec l'utilitaire Split Data de Kutools for Excel


Créer de nouvelles feuilles pour chaque ligne avec le code VBA

Avec les codes suivants, vous pouvez créer une nouvelle feuille en fonction des valeurs de colonne ou simplement créer de nouvelles feuilles pour chaque ligne dans Excel.

1. presse autre + F11 touches simultanément pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Et puis collez le code suivant dans le Module fenêtre.

Code VBA: créez une nouvelle feuille pour chaque ligne en fonction de la colonne

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 est la plage de titres de votre tableau. Vous pouvez le modifier en fonction de vos besoins.

3. presse F5 clé pour exécuter le code, puis de nouvelles feuilles de calcul sont créées après toutes les feuilles de calcul du classeur actuel comme ci-dessous capture d'écran:

Si vous souhaitez créer directement de nouvelles feuilles pour chaque ligne sans tenir compte de la valeur de la colonne, vous pouvez utiliser le code suivant.

Code VBA: créer directement une nouvelle feuille pour chaque ligne

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

Après avoir exécuté le code, chaque ligne de la feuille de calcul active sera placée dans une nouvelle feuille de calcul.

Notes: La ligne d'en-tête sera également placée dans une nouvelle feuille avec ce code VBA.


Créez de nouvelles feuilles pour chaque ligne avec l'utilitaire Split Data de Kutools for Excel

En fait, la méthode ci-dessus est compliquée et difficile à comprendre. Dans cette section, nous vous présentons le Diviser les données utilité de Kutools for Excel.

Avant d'appliquer Kutools for Excel, S'il vous plaît téléchargez et installez-le d'abord.

1. Sélectionnez la table à utiliser pour créer de nouvelles feuilles, puis cliquez sur Kutools Plus> Cracher des données. Voir la capture d'écran:

2. dans le Diviser les données en plusieurs feuilles de calcul boîte de dialogue, procédez comme suit.

A. Pour créer de nouvelles feuilles en fonction de la valeur de la colonne:

1). Veuillez sélectionner le Colonne spécifique et spécifiez une colonne sur laquelle vous souhaitez fractionner les données dans la liste déroulante;
2). Si vous souhaitez nommer les feuilles de calcul avec des valeurs de colonne, veuillez sélectionner Valeurs de la colonne dans l' Règles la liste déroulante;
3). Clique le OK bouton. Voir la capture d'écran:

B. Pour créer directement de nouvelles feuilles pour chaque ligne:

1). Sélectionner Lignes fixes option, entrez le numéro 1 dans la boîte;
2). Sélectionner Numéros de ligne du Règles la liste déroulante;
3). Clique le OK bouton. Voir la capture d'écran:

un nouveau classeur est créé avec toutes les nouvelles feuilles à l'intérieur. Voir les captures d'écran ci-dessous.

Création de nouvelles feuilles pour chaque ligne en fonction de la valeur de la colonne:

Créer une nouvelle feuille pour chaque ligne sans tenir compte de la valeur de la colonne:

  Si vous souhaitez bénéficier d'un essai gratuit (30 jours) de cet utilitaire, veuillez cliquer pour le télécharger, puis passez à appliquer l'opération selon les étapes ci-dessus.

Créez de nouvelles feuilles pour chaque ligne avec l'utilitaire Split Data de Kutools for Excel

Meilleurs outils de productivité bureautique

Caractéristiques populaires: Rechercher, mettre en évidence ou identifier les doublons   |  Supprimer les lignes vides   |  Combinez des colonnes ou des cellules sans perdre de données   |   Tour sans formule 
Super recherche: VSearchup à critères multiples    VSearch à valeurs multiples  |   Recherche virtuelle sur plusieurs feuilles   |   Recherche floue ....
Liste déroulante avancée: Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple ....
Gestionnaire de colonnes: Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages et les colonnes 
Caractéristiques en vedette: Mise au point de la grille   |  Voir Design   |   Grande barre de formule    Gestionnaire de classeurs et de feuilles   |  Centre de ressources (Texte automatique)   |  Sélecteur de date   |  Combiner des feuilles de travail   |  Crypter/déchiffrer les cellules    Envoyer des e-mails par liste   |  Super filtre   |   Filtre spécial (filtre gras/italique/barré...) ...
Les 15 meilleurs ensembles d'outils12 Texte Outils (Ajouter du texte, Supprimer les caractères, ...)   |   50+ Graphique Types (Diagramme de Gantt, ...)   |   40+ Pratique Formules (Calculer l'âge en fonction de l'anniversaire, ...)   |   19 Insertion Outils (Insérer le code QR, Insérer une image à partir du chemin, ...)   |   12 Conversion Outils (Nombres en mots, Conversion des devises, ...)   |   7 Fusionner et fractionner Outils (Lignes de combinaison avancées, Cellules divisés, ...)   |   ... et plus

Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps.  Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...

onglet kte 201905


Office Tab apporte une interface à onglets à Office et facilite grandement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
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