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:
Placez les colonnes empilées dans une nouvelle feuille.
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
microsoft-excel
vba
daniellopez46
la source
la source
Réponses:
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.
la source