2 moyens rapides pour diviser le contenu d'une feuille de calcul Excel en plusieurs classeurs en fonction d'une colonne spécifique

Partage maintenant:

Parfois, dans l'analyse des données, vous devrez peut-être diviser le contenu d'une feuille de calcul Excel en plusieurs classeurs Excel en fonction d'une colonne spécifique. Maintenant, dans ce post, nous allons vous apprendre 2 façons rapides de l'obtenir.

De nombreux utilisateurs ont fréquemment besoin de diviser une feuille de calcul Excel contenant d'énormes lignes de données en plusieurs classeurs Excel distincts basés sur une colonne spécifique. Par exemple, voici mon exemple de feuille de calcul Excel. Je souhaite diviser les données de cette feuille sur la base de la colonne "Prix de la licence unique (USD)" en plusieurs classeurs.

Exemple de feuille de calcul Excel

En général, vous aurez tendance à utiliser la méthode 1 suivante pour filtrer et copier manuellement les données. Mais, ce sera assez fastidieux et stupide s'il y a trop d'options de filtrage. Par conséquent, nous montrons ici également une méthode beaucoup plus pratique - la méthode 2, qui utilise VBA. Maintenant, lisez la suite pour les obtenir en détail.

Méthode 1 : copier le contenu dans des classeurs Excel séparés après le filtre

  1. Au début, sélectionnez une cellule dans la colonne spécifique, comme "Cellule B1" dans mon propre cas.
  2. Ensuite, allez dans l'onglet "Données" et cliquez sur le bouton "Filtrer".Filtrer les données
  3. Ensuite, cliquez sur le bouton "flèche vers le bas" dans l'en-tête de colonne pour afficher une liste de choix de filtres.
  4. Maintenant, décochez l'option "(Sélectionner tout)".Décochez "Sélectionner tout"
  5. Après cela, vous pouvez sélectionner un choix de filtre, comme "29.95" dans mon exemple, et cliquer sur "OK".
  6. À la fois, seules les données, dont la valeur dans la colonne B est "29.95", seront laissées.Il ne reste que les données filtrées
  7. Ensuite, copiez les données filtrées et collez-les dans un nouveau classeur Excel.Copier et coller le contenu
  8. Plus tard, utilisez la même méthode pour diviser les autres données afin de séparer les classeurs Excel.

Méthode 2: Séparer le contenu par lots en plusieurs classeurs Excel via VBA

  1. En premier lieu, assurez-vous que la feuille de calcul spécifique est ouverte.
  2. Ensuite, lancez l'éditeur VBA selon "Comment exécuter le code VBA dans votre Excel" .
  3. Ensuite, placez le code suivant dans le projet "ThisWorkbook".
Sub SplitSheetDataIntoMultipleWorkbooksBasedOnSpecificColumn()
    Dim objWorksheet As Excel.Worksheet
    Dim nLastRow, nRow, nNextRow As Integer
    Dim strColumnValue As String
    Dim objDictionary As Object
    Dim varColumnValues As Variant
    Dim varColumnValue As Variant
    Dim objExcelWorkbook As Excel.Workbook
    Dim objSheet As Excel.Worksheet
 
    Set objWorksheet = ActiveSheet
    nLastRow = objWorksheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row
 
    Set objDictionary = CreateObject("Scripting.Dictionary")
 
    For nRow = 2 To nLastRow
        'Get the specific Column
        'Here my instance is "B" column
        'You can change it to your case
        strColumnValue = objWorksheet.Range("B" & nRow).Value
 
        If objDictionary.Exists(strColumnValue) = False Then
           objDictionary.Add strColumnValue, 1
        End If
    Next
 
    varColumnValues = objDictionary.Keys
 
    For i = LBound(varColumnValues) To UBound(varColumnValues)
        varColumnValue = varColumnValues(i)
 
        'Create a new Excel workbook
        Set objExcelWorkbook = Excel.Application.Workbooks.Add
        Set objSheet = objExcelWorkbook.Sheets(1)
        objSheet.Name = objWorksheet.Name
 
        objWorksheet.Rows(1).EntireRow.Copy
        objSheet.Activate
        objSheet.Range("A1").Select
        objSheet.Paste
 
        For nRow = 2 To nLastRow
            If CStr(objWorksheet.Range("B" & nRow).Value) = CStr(varColumnValue) Then
               'Copy data with the same column "B" value to new workbook
               objWorksheet.Rows(nRow).EntireRow.Copy
  
               nNextRow = objSheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row + 1
               objSheet.Range("A" & nNextRow).Select
               objSheet.Paste
               objSheet.Columns("A:B").AutoFit
            End If
        Next
    Next
End Sub

Code VBA - Diviser le contenu d'une feuille de calcul Excel en plusieurs classeurs en fonction d'une colonne spécifique

  1. Après cela, cliquez sur l'icône "Exécuter" dans la barre d'outils ou appuyez sur la touche "F5".
  2. Une fois la macro terminée, les classeurs Excel séparés seront créés avec les données fractionnées de la feuille de calcul Excel source.Nouveaux classeurs Excel
  3. Chaque classeur ressemblera à la capture d'écran suivante.Nouveaux classeurs Excel séparés

Comparaison

  Avantages Désavantages
Méthode 1 1. Facile à utiliser pour tous les utilisateurs d'Excel Gênant s'il y a trop de choix de filtres
2. Rapide s'il y a peu de choix de filtres
Méthode 2 Beaucoup plus efficace que la méthode 1, peu importe le nombre de choix de filtres Un peu difficile à utiliser pour les débutants en VBA

Empêcher la perte de données Excel

Bien que MS Excel devienne de plus en plus avancé et sophistiqué, il a toujours tendance à planter de temps en temps en raison de divers facteurs, tels que des compléments tiers malveillants ou des erreurs humaines, etc. Étant donné que le crash d'Excel peut directement conduire à Corruption d'Excel, afin d'éviter la perte de données Excel, vous devez sauvegarder régulièrement vos fichiers Excel. Sinon, vous devez appliquer un outil de réparation Excel, tel que DataNumen Excel Repair pour réparer les fichiers Excel corrompus.

Introduction de l'auteur:

Shirley Zhang est une experte en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris SQL Server réparation et produits logiciels de réparation Outlook. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.