Astuce Excel : Diviser des données en plusieurs feuilles de calcul / classeurs selon la valeur d'une colonne
Lors de la gestion de grands ensembles de données dans Excel, il peut être très avantageux de diviser les données en plusieurs feuilles de calcul en fonction de valeurs spécifiques de colonnes. Cette méthode améliore non seulement l'organisation des données, mais elle augmente également leur lisibilité et facilite l'analyse des données.
Supposons que vous ayez un grand historique de ventes contenant plusieurs entrées telles que le nom du produit, la quantité vendue au premier trimestre. L'objectif est de diviser ces données en feuilles de calcul distinctes pour chaque nom de produit afin que les performances de vente individuelles puissent être analysées séparément.
Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne
Diviser des données en plusieurs classeurs en fonction de la valeur d'une colonne avec du code VBA
Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne
Normalement, vous pouvez d'abord trier la liste de données, puis copier et coller les données une par une dans d'autres nouvelles feuilles de calcul. Mais cela nécessitera beaucoup de patience pour copier et coller à répétition. Dans cette section, nous présenterons deux méthodes simples pour accomplir efficacement cette tâche dans Excel, vous faisant gagner du temps et réduisant les risques d'erreurs.
Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne avec du code VBA
1. Maintenez les touches ALT + F11 enfoncées pour ouvrir la fenêtre Microsoft Visual Basic for Applications.
2. Cliquez sur Insertion > Module, puis 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. Ensuite, appuyez sur F5 pour exécuter le code, et une boîte de dialogue apparaît pour vous rappeler de sélectionner la ligne d'en-tête, puis cliquez sur OK. Voir capture d'écran :
4. Dans la deuxième boîte de dialogue, veuillez sélectionner les données de la colonne que vous souhaitez diviser, puis cliquez sur OK. Voir capture d'écran :
5. Toutes les données de la feuille de calcul active sont divisées en plusieurs feuilles de calcul en fonction des valeurs de la colonne. Les feuilles de calcul résultantes sont nommées selon les valeurs des cellules divisées et placées à la fin du classeur. Voir capture d'écran :
Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne avec Kutools pour Excel
Kutools pour Excel intègre une fonctionnalité intelligente – Diviser les données directement dans votre environnement Excel. Diviser des données en plusieurs feuilles de calcul n'est plus un défi. Notre outil intuitif divise automatiquement votre ensemble de données en fonction de la valeur de colonne choisie ou du nombre de lignes, garantissant que chaque information se trouve exactement là où vous en avez besoin. Dites adieu à la tâche fastidieuse d'organiser manuellement vos feuilles de calcul et adoptez une méthode plus rapide et sans erreurs pour gérer vos données.
Après avoir installé Kutools pour Excel, sélectionnez la plage de données, puis cliquez sur Kutools Plus > Diviser les données pour ouvrir la boîte de dialogue Diviser les données en plusieurs feuilles de calcul.
- Sélectionnez l'option Colonne spécifique dans la section Diviser selon, et choisissez la valeur de colonne sur laquelle vous souhaitez diviser les données depuis 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 divisée, cochez l'option Mes données contiennent des en-têtes. (Vous pouvez spécifier le nombre de lignes d'en-tête en fonction de vos données. Par exemple, si vos données contiennent deux en-têtes, tapez 2.)
- Vous pouvez ensuite spécifier les noms des feuilles de calcul divisées, sous la section Nom des nouvelles feuilles de calcul, spécifiez la règle de nommage des feuilles de calcul depuis la liste déroulante Règles. Vous pouvez également ajouter un Préfixe ou un Suffixe aux noms des feuilles.
- Cliquez sur le bouton OK . Voir capture d'écran :
Maintenant, les données de la feuille de calcul sont divisées en plusieurs feuilles de calcul dans un nouveau classeur.
Diviser des données en plusieurs classeurs en fonction de la valeur d'une colonne avec du code VBA
Parfois, plutôt que de diviser les données en plusieurs feuilles de calcul, il peut être plus bénéfique de diviser les données en classeurs distincts basés sur une colonne clé. Voici un guide étape par étape sur la façon d'utiliser du code VBA pour automatiser le processus de division des données en plusieurs classeurs basés sur une valeur spécifique de colonne.
1. Maintenez les touches ALT + F11 enfoncées pour ouvrir la fenêtre Microsoft Visual Basic for Applications.
2. Cliquez sur Insertion > Module, puis collez le code suivant dans la fenêtre Module.
Sub SplitDataByColToWorkbooks()
' Updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWS As Workbook
Dim savePath As String
' Set the directory to save new workbooks
savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
Application.DisplayAlerts = False
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.Address(False, False)
titlerow = xTRg.Row
ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
For i = 2 To UBound(myarr)
Set xWS = Workbooks.Add
ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"
xWS.Close SaveChanges:=False
Next i
ws.AutoFilterMode = False
Application.DisplayAlerts = True
ws.Activate
End Sub
3. Ensuite, appuyez sur F5 pour exécuter le code, et une boîte de dialogue apparaît pour vous rappeler de sélectionner la ligne d'en-tête, puis cliquez sur OK. Voir capture d'écran :
4. Dans la deuxième boîte de dialogue, veuillez sélectionner les données de la colonne que vous souhaitez diviser, puis cliquez sur OK. Voir capture d'écran :
5. Après la division, toutes les données de la feuille de calcul active sont divisées en plusieurs classeurs en fonction des valeurs de la colonne. Tous les classeurs divisés sont sauvegardés dans le dossier que vous avez spécifié. Voir capture d'écran :
Articles connexes :
- Diviser des données en plusieurs feuilles de calcul par nombre de lignes
- Diviser efficacement une grande plage de données en plusieurs feuilles de calcul Excel en fonction d'un nombre spécifique de lignes peut rationaliser la gestion des données. Par exemple, diviser un jeu de données toutes les 5 lignes en plusieurs feuilles peut le rendre plus gérable et organisé. Ce guide propose deux méthodes pratiques pour accomplir cette tâche rapidement et facilement.
- Fusionner deux tables ou plus en une seule basée sur des colonnes clés
- Supposons que vous ayez trois tables dans un classeur, et maintenant vous voulez fusionner ces tables en une seule table basée sur les colonnes clés correspondantes pour obtenir le résultat comme indiqué dans la capture d'écran ci-dessous. Cela pourrait être une tâche difficile pour la plupart d'entre nous, mais ne vous inquiétez pas, cet article introduira quelques méthodes pour résoudre ce problème.
- Diviser des chaînes de texte par un délimiteur en plusieurs lignes
- Normalement, vous pouvez utiliser la fonction Texte en colonnes pour diviser le contenu des cellules en plusieurs colonnes en utilisant un délimiteur spécifique, tel qu'une virgule, un point, un point-virgule, une barre oblique, etc. Mais parfois, vous devrez peut-être diviser le contenu des cellules délimitées en plusieurs lignes et répéter les données des autres colonnes comme indiqué dans la capture d'écran ci-dessous. Avez-vous des bonnes solutions pour traiter cette tâche dans Excel ? Ce tutoriel présentera certaines méthodes efficaces pour accomplir cette tâche dans Excel.
- Diviser le contenu des cellules multilignes en lignes/colonnes séparées
- Supposons que vous ayez du contenu de cellule multiligne qui est séparé par Alt + Entrée, et maintenant vous devez diviser le contenu multiligne en lignes ou colonnes séparées, que pouvez-vous faire ? Dans cet article, vous apprendrez comment diviser rapidement le contenu des cellules multilignes en lignes ou colonnes séparées.
Meilleurs outils de productivité pour Office
Boostez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité sans précédent. Kutools pour Excel propose plus de300 fonctionnalités avancées pour augmenter la productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office, et facilite grandement votre travail
- Activez la modification 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é de50 %, et réduit des centaines de clics de souris pour vous chaque jour !