Comment empiler plusieurs colonnes en une seule?

2

Exemple de données

Je ne suis pas assez expérimenté avec VBA pour accomplir cela. Comment modifier le VBA ci-dessous pour pouvoir effectuer les opérations suivantes:

  1. Placez les colonnes empilées dans une nouvelle feuille.

  2. Gérer les blancs (le code ci-dessous le fait actuellement)

Le code 3 est exécuté sur la plage actuellement sélectionnée par l'utilisateur. Idéalement, l'utilisateur peut sélectionner des colonnes non contiguës.

Sub MoveAllDataToColumnA()
    Dim i As Long, ws As Worksheet, rngCopy As Range, rngEnd As Range
    Set ws = ActiveSheet
    Do Until ws.Cells(1, 2).Value = ""
        Set rngCopy = ws.Range("B2", ws.Cells(ws.Rows.Count, "B").End(xlUp))
        Set rngEnd = ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1, 0)
        rngEnd.Resize(rngCopy.Rows.Count, 1).Value = rngCopy.Value
        rngCopy.EntireColumn.Delete
    Loop
End Sub
daniellopez46
la source
J'utiliserais le complément Power Query pour cela, mais il ne peut pas gérer l'exigence n ° 3.
Mike Honey
1
Merci de m'avoir présenté à Power Query. Comme dans mon autre post cela fonctionnera également. Je ne suis pas aussi inquiet à propos de l'exigence n ° 3 car Power Query, j'ai découvert, propose une autre méthode pour accomplir la même chose. Si vous soumettez votre réponse en guise de réponse, je l'accepterai.
daniellopez46

Réponses:

2

J'utiliserais l'add-in de requête de puissance pour ceci, bien qu'il ne puisse pas gérer l'exigence n ° 3. À partir d'Excel 2016, Power Query est intégré au ruban de données dans la section "Obtenir et transformer".

Les étapes que je créerais dans Power Query seraient les suivantes:

Sélectionnez les colonnes Org et Length, puis choisissez "Remove Columns".

Sélectionnez la colonne Catégorie et choisissez "Colonnes non croisées / Autres colonnes non croisées".

Vous pouvez livrer le résultat dans un nouveau tableau Excel.

Mike Honey
la source