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

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

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

doc fractionner les données par colonnes 1

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

Divisez les données en plusieurs feuilles de calcul en fonction de la colonne avec Kutools for Excel


Divisez 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. Veuillez faire comme ceci:

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

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

Sub Splitdatabycol()
'updateby Extendoffice
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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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, et une boîte de dialogue s'affiche pour vous rappeler de sélectionner la ligne d'en-tête, voir capture d'écran:

doc fractionner les données par colonnes 7

4. Et puis, cliquez OK bouton, et dans la deuxième boîte de dialogue, sélectionnez les données de colonne que vous souhaitez diviser en fonction, voir capture d'écran:

doc fractionner 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 calcul par la valeur de la colonne. Et les feuilles de calcul fractionnées sont nommées avec les noms des cellules fractionnées. Voir la capture d'écran:

doc fractionner les données par colonnes 2

Notes: Les feuilles de calcul fractionnées sont placées à la fin du classeur où se trouve la feuille de calcul principale.


Divisez les données en plusieurs feuilles de calcul en fonction de la colonne avec Kutools for 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 selon nos besoins. Ici, je vais vous présenter un outil multifonctionnel -Kutools pour Excel, il est Diviser les données L'utilitaire peut non seulement vous aider à diviser les données en plusieurs feuilles de calcul en fonction de la colonne, mais peut également diviser les données par nombre de lignes.

Remarque :Appliquer cette Diviser les données, tout d'abord, vous devez télécharger le Kutools pour Excel, puis appliquez la fonction rapidement et facilement.

Après l'installation de Kutools pour Excel, veuillez faire comme ceci:

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

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

doc fractionner les données par colonnes 3

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

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

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

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

doc fractionner les données par colonnes 4

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

doc fractionner les données par colonnes 5

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


Divisez les données en plusieurs feuilles de calcul en fonction de la colonne avec Kutools for Excel

Kutools pour Excel comprend plus de 300 outils Excel pratiques. Essai gratuit sans limitation de 30 jours. Téléchargez la version d'essai gratuite maintenant!


Article connexe:

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


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement 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!
bas de cabine
Commentaires (295)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Diviser les données en plusieurs feuilles de calcul en fonction de la colonne avec le code VBA affiche une erreur. veuillez essayer de le rectifier et de le mettre à jour. Si vous fournissez les exemples de fichiers Excel, cela sera vraiment utile.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, merci pour le code ça marche pour moi ! J'essaie de trouver un code qui divise une feuille principale en plusieurs feuilles en fonction de la date
Ce commentaire a été minimisé par le modérateur sur le site
C'était incroyable ! Ce processus m'aurait pris plus d'une heure à faire, mais il a été fait en 30 secondes. Celui-ci je le garderai pour ma bibliothèque VBA. Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'ai 30000 cellules dans ma feuille de calcul et j'ai besoin de les diviser en mois. y at-il un code que je peux utiliser pour le faire plus rapidement. J'ai 8 colonnes et la date est la colonne B. J'ai joué avec le code ci-dessus qui est donné, mais j'ai échoué. Pourriez-vous s'il vous plaît m'aider avec cela. Merci d'avance
Ce commentaire a été minimisé par le modérateur sur le site
J'obtiens l'erreur suivante : Débordement de l'erreur d'exécution '6' Après le débogage, affichez la ligne For i = 2 To Ir Mes lignes Excel dépassent 500,000 XNUMX. Existe-t-il une solution Merci beaucoup pour le code. Meilleure considération
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, merci beaucoup pour le code. J'obtiens l'erreur suivante : Erreur d'exécution '6' débordement à la ligne For i = 2 To Ir Toute solution pour cela. Merci
Ce commentaire a été minimisé par le modérateur sur le site
J'obtiens une erreur lorsque j'appuie sur F5 - GoTo Box demandant une référence ??
Ce commentaire a été minimisé par le modérateur sur le site
Le processus VBA a parfaitement fonctionné, merci beaucoup de partager votre expertise et de me faire gagner beaucoup de temps !
Ce commentaire a été minimisé par le modérateur sur le site
Le code VBA a parfaitement fonctionné. Il ne semble pas mettre à jour les feuilles lorsque des modifications sont apportées à Sheet1. Veuillez aider.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, merci pour le code ça marche pour moi ! Je n'ai que deux questions/remarques. 1 les données copiées n'incluent pas la mise en page du fichier d'origine. Serait-il possible de copier les données sous forme de tableau avec filtre automatique ? 2 les données copiées ne semblent pas être limitées à la plage de titres. Est-il possible d'ajuster le code pour une plage ou un nom de table spécifique ? Ces ajustements seraient très utiles. Cordialement, Pieter
Ce commentaire a été minimisé par le modérateur sur le site
Fonctionne comme un charme! Merci.
Ce commentaire a été minimisé par le modérateur sur le site
Fonctionne comme un charme... Merci pour le code premium... :lol:
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup, cela a très bien fonctionné. Cependant, que se passe-t-il si je veux que les données de chaque onglet soient à nouveau triées (en utilisant une autre colonne) ? Fondamentalement, ce VBA le divise en onglets, mais je voudrais peut-être le décomposer davantage... est-ce possible ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Jonathan, Ancien commentaire que je connais, mais qui pourrait être utile à d'autres à l'avenir : j'avais besoin de le faire, mais je ne pouvais pas trouver un moyen simple avec le VBA. Cependant, j'ai trouvé que si vous créez une nouvelle colonne dans votre feuille de calcul en tant que fusion des 2, par exemple = A1 & " " & A2 Cela vous donne alors 1 cellule avec les deux ensembles d'informations. Vous pouvez ensuite exécuter le module ci-dessus et cela fonctionne bien ! Modifier - Les données dans les colonnes doivent être inférieures à 30 caractères, sinon les données ne sont pas copiées (s'affichent comme une erreur sur le module) et vous obtenez une feuille vierge au milieu de vos nouvelles feuilles.
Ce commentaire a été minimisé par le modérateur sur le site
Génial.. C'était magnifique. J'ai lutté avec ce problème pendant si longtemps et ce code est venu comme un répit. Merci de l'avoir partagé.
Ce commentaire a été minimisé par le modérateur sur le site
Étonnante. Merci d'avoir posté.
Ce commentaire a été minimisé par le modérateur sur le site
Le code a fonctionné comme un charme pour des données plus petites (moins de 1200 lignes). J'ai essayé d'utiliser sur la plus grande feuille de calcul avec (17000 lignes) et elle s'est écrasée après s'être divisée en 10-12 feuilles. Nous avons donc essayé de diviser les données d'origine en 3 classeurs différents et de nous arrêter quand même. Nous avons Windows 7 et nos ordinateurs ne sont pas si lents non plus. Suggérez-vous des lignes limitées sur les données pour utiliser ce code en toute sécurité ? Toute suggestion serait appréciée.
Ce commentaire a été minimisé par le modérateur sur le site
Le code a fonctionné comme un charme pour des données plus petites (moins de 1200 lignes). J'ai essayé d'utiliser sur la plus grande feuille de calcul avec (17000 lignes) et elle s'est écrasée après s'être divisée en 10-12 feuilles. Nous avons donc essayé de diviser les données d'origine en 3 classeurs différents et de nous arrêter quand même. Nous avons Windows 7 et nos ordinateurs ne sont pas si lents non plus. Suggérez-vous des lignes limitées sur les données pour utiliser ce code en toute sécurité ? Toute suggestion serait appréciée. Ce dont je ne suis pas sûr, c'est : quel est le nombre maximal de lignes que la macro peut prendre en charge ? Je pourrais jouer avec ça... C'est quelque part entre 20k et 40k![/quote]
Ce commentaire a été minimisé par le modérateur sur le site
Face au même problème. Le code fonctionne pour les feuilles où les données sont moins de lignes, mais pour les données plus volumineuses, il affiche une erreur car "Excel ne peut pas terminer cette tâche avec les ressources disponibles. Choisissez moins de données ou fermez d'autres applications" (aucune autre application ne fonctionne en même temps) Le code a fonctionné comme un charme pour des données plus petites (moins de 1200 lignes). J'ai essayé d'utiliser sur la plus grande feuille de calcul avec (17000 lignes) et elle s'est écrasée après s'être divisée en 10-12 feuilles. Nous avons donc essayé de diviser les données d'origine en 3 classeurs différents et de nous arrêter quand même. Nous avons Windows 7 et nos ordinateurs ne sont pas si lents non plus. Suggérez-vous des lignes limitées sur les données pour utiliser ce code en toute sécurité ? Toute suggestion serait appréciée.
Ce commentaire a été minimisé par le modérateur sur le site
Tu es mon héros de tous les temps ! J'ai cherché cela pendant des mois sans succès. Je dois faire ces rapports de rupture hebdomadaires / mensuels en plus de 147 feuilles de calcul et ils ne m'obtiendront pas de kutools. Sur cette note... J'ai vraiment besoin d'apprendre le codage. :( Mais merci!
Ce commentaire a été minimisé par le modérateur sur le site
HI, j'ai une feuille contenant 65000 8 enregistrements et 80 cas différents, donc fondamentalement, elle devrait générer 6 feuilles différentes. J'ai essayé d'exécuter ce code, mais il lance l'erreur d'exécution XNUMX Overflow. Ce code peut-il être modifié pour résoudre mon problème ? S'il vous plaît, votre aide sera très appréciée.
Ce commentaire a été minimisé par le modérateur sur le site
[quote]HI, j'ai une feuille contenant 65000 8 enregistrements et ayant 80 cas différents, donc fondamentalement, elle devrait générer 6 feuilles différentes. J'ai essayé d'exécuter ce code, mais il lance l'erreur d'exécution XNUMX Overflow. Ce code peut-il être modifié pour résoudre mon problème ? S'il vous plaît, votre aide sera très appréciée.Par ACE[/quote] Essayez de changer Dim vcol, i As Integer en Dim vcol, i As Long
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'ai essayé de changer DIM vcol en LOng et cela fonctionnait bien, mais tout à coup, à cause d'une erreur, il n'y a pas assez de mémoire pour terminer cette action, essayez d'utiliser moins de données ou de fermer d'autres applications. Bien que je n'ai pas d'autres applications ouvertes. J'ai un peu plus de 100 k lignes et environ. Taille de fichier de 16 Mo. toute aide serait appréciée. Merci Mustafa
Ce commentaire a été minimisé par le modérateur sur le site
Génial morceau de code - fonctionne parfaitement (si vous changez les variables en celle dont votre feuille de calcul a besoin)
Ce commentaire a été minimisé par le modérateur sur le site
J'ai une feuille avec un nombre variable de lignes. L'une des colonnes contient les dates à partir de 2010. Les autres colonnes sont des noms de fonds avec les données NAV pour chaque fonds contre la date. Donc, je ne veux pas diviser les colonnes en différentes feuilles, je veux diviser chaque NOM DE FONDS dans sa propre feuille avec les données NAV par date de fin de mois, pas les dates quotidiennes. Cela peut-il être fait ou est-ce impossible?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai une feuille de calcul que j'utilise et j'essaie de trouver un code vba qui reconnaîtra un nom de compte et copiera la ligne particulière dans un nouveau classeur et une feuille portant le même nom, pouvez-vous aider?
Ce commentaire a été minimisé par le modérateur sur le site
Génial! Le code VBA fonctionne, merci ! J'ai besoin que ces feuilles de calcul de sortie soient dans des fichiers Excel individuels au lieu de feuilles de calcul et il y a une erreur lorsque je divise en plusieurs feuilles de calcul.
Ce commentaire a été minimisé par le modérateur sur le site
Starscor et Tim si vous voulez diviser les feuilles du fichier en plusieurs fichiers en utilisant les noms des lignes il y a un petit code de macro dans cette même page web qui le fait, il suffit de rechercher "split a workbook to separate Excel files" vous va le trouver. Ajoutez le code de cet exemple à la fin de celui-ci en supprimant bien sûr le doublon final sub et sub et vous obtiendrez un fichier pour chacun.
Ce commentaire a été minimisé par le modérateur sur le site
quelqu'un peut-il m'aider à trier les colonnes dans différentes feuilles du même classeur à la fois et à supprimer les doublons dans différentes feuilles car j'ai environ 65 feuilles dans le même classeur
Ce commentaire a été minimisé par le modérateur sur le site
cela est si excitant! Merci. Je cherchais cela depuis un certain temps.
Ce commentaire a été minimisé par le modérateur sur le site
Excellent - merci pour ce partage. Propage même les surbrillances/le format vers de nouvelles feuilles de calcul !
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés