Les cookies nous permettent d'offrir nos services. En utilisant nos services, vous acceptez notre utilisation des cookies.
Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
Inscription
x

or

Comment diviser des données dans plusieurs feuilles de calcul en fonction de la colonne dans Excel?

Supposons que vous ayez une feuille de calcul contenant d'énormes rangées de données, et maintenant, vous devez diviser les données en plusieurs feuilles de calcul en fonction du Nom colonne (voir capture d'écran suivante), et les noms sont entrés au hasard. Vous pouvez peut-être les trier d'abord, puis les copier et les coller un par un dans d'autres nouvelles feuilles de calcul. Mais cela nécessitera de la patience pour copier et coller à plusieurs reprises. Aujourd'hui, je vais parler de quelques astuces pour résoudre cette tâche.

doc diviser les données par colonnes 1

Diviser les données en plusieurs feuilles de calcul en fonction de la colonne avec le code VBA

Diviser les données en plusieurs feuilles de calcul basées sur la colonne avec Kutools pour Excel


Diviser les données en plusieurs feuilles de calcul en fonction du nombre de colonnes ou de lignes spécifiques dans la feuille de calcul:

Si vous souhaitez diviser une feuille de calcul volumineuse en plusieurs feuilles en fonction de données de colonne ou de nombre de lignes spécifiques, Kutools for Excel's Diviser les données fonctionnalité peut vous aider à résoudre cette tâche rapidement et facilement.

doc diviser les données par colonnes 6

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez et essai gratuit maintenant!


Diviser les données en plusieurs feuilles de calcul en fonction de la colonne avec le code VBA


Si vous souhaitez fractionner les données en fonction de la valeur de la colonne rapidement et automatiquement, le code VBA suivant est un bon choix. S'il vous plaît faites comme ceci:

1. Maintenez le ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez le code suivant dans la fenêtre du module.

Sub Splitdatabycol()
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Puis appuyez F5 Pour exécuter le code, une boîte de dialogue apparaît pour vous rappeler de sélectionner la ligne d'en-tête, voir la capture d'écran:

doc diviser les données par colonnes 7

4. Et puis, cliquez OK Cliquez sur le bouton, puis dans la deuxième boîte de dialogue, sélectionnez les données de colonne sur lesquelles vous souhaitez fractionner, voir capture d'écran:

doc diviser les données par colonnes 8

5. Puis clique OKet toutes les données de la feuille de calcul active sont divisées en plusieurs feuilles de travail par la valeur de la colonne. Et les feuilles de calcul fractionnées sont nommées avec les noms de cellules fractionnées. Voir la capture d'écran:

doc diviser les données par colonnes 2

Note: Les feuilles de calcul fractionnées sont placées à la fin du classeur dans lequel se trouve la feuille de calcul principale.


Diviser les données en plusieurs feuilles de calcul basées sur la colonne avec Kutools pour Excel

En tant que débutant Excel, ce long code VBA est quelque peu difficile pour nous, et la plupart d'entre nous ne savent même pas comment modifier le code en fonction de nos besoins.

Ici, je vais vous présenter un outil multifonctionnel ...Kutools for Excel, il est Diviser les données Utilitaire peut non seulement vous aider à diviser les données en plusieurs feuilles de calcul basées sur la colonne, mais peut également diviser les données par nombre de lignes.

Kutools for Excel : avec plus de 300 compléments Excel pratiques, libre d'essayer sans limitation dans 60 jours.

Si vous avez installé Kutools for Excel, s'il vous plaît faites comme suit:

1. Sélectionnez la plage de données que vous souhaitez diviser.

2. Cliquez Kutools Plus > Feuille > Diviser les données, voir capture d'écran:

doc diviser les données par colonnes 3

3. Dans le Diviser les données en plusieurs feuilles de travail boîte de dialogue, vous devez:

1). Sélectionner Colonne spécifique option dans la Split basé sur section, et choisissez la valeur de la colonne dans laquelle vous souhaitez fractionner les données dans la liste déroulante. (Si vos données contiennent des en-têtes et que vous souhaitez les insérer dans chaque nouvelle feuille de calcul, veuillez vérifier Mes données ont des en-têtes option.)

2). Vous pouvez ensuite spécifier les noms de feuille de calcul fractionnés, sous Nouveau nom de feuille de calcul section, spécifiez les règles de noms de feuille de calcul Règles liste déroulante, vous pouvez ajouter le Préfixe or Suffixe pour les noms de feuilles aussi.

3). Clique le OK bouton. Voir la capture d'écran:

doc diviser les données par colonnes 4

4. Maintenant, les données sont divisées en plusieurs feuilles de calcul dans un nouveau classeur.

doc diviser les données par colonnes 5

Cliquez pour télécharger Kutools pour Excel et essai gratuit maintenant!


Diviser les données en plusieurs feuilles de calcul basées sur la colonne avec Kutools pour Excel

Kutools for Excel comprend plus de 300 outils maniables Excel. Gratuit pour essayer sans limitation dans les jours 60. Téléchargez l'essai gratuit maintenant!


Article connexe:

Comment diviser les données en plusieurs feuilles de calcul par lignes?



Outils de productivité recommandés

Office Tab

étoile d&#39;or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d&#39;or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d&#39;or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d&#39;écran de Kutools pour Excel

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.
    Rudi Miller · 1 days ago
    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1
    Set ws = Sheets("Sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:C1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    Jason · 1 months ago
    This formula is great, works perfectly for me.
    I want to split out data based on a location, which is in column 1. Which this does.
    However, is it possible to also split out based on column 2, for example. Built and Not Built. So a secondary condition also?
  • To post as a guest, your comment is unpublished.
    jose · 1 months ago
    can someone help please im using this but i keep getting to many columns. i have to keep deleting rows every time i use this.

    This is what im using


    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1
    Set ws = Sheets("sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:AN1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    avinash · 1 months ago
    Thanks for VBA, it works great. In addition to that question, I have column which is dependent. So when i select some value my column values get changed hence I need vba solution to replace earlier split worksheet to replace with new value of columns. Can anyone help me out.?

    Thanks in advance
  • To post as a guest, your comment is unpublished.
    JP Tontegode · 1 months ago
    Is there a way to have the macro create a separate spreadsheet for each new tab instead of just adding a tab into the current worksheet? Thanks!