1 votes

Combiner plusieurs lignes en une seule

J'essaie de combiner plusieurs lignes de données en une seule. La colonne A contient la valeur sur laquelle les regroupements seront basés. Les lignes dont les valeurs de la colonne A correspondent seront combinées en une seule ligne. Ma plage s'étend de la colonne A à X. J'ai donc besoin d'une ligne de données correspondante qui commence dans la colonne Y.

Ejemplo:

 1001  A  C 
 1001  B  D 
 1002  A  E 
 1002  B  F 
 1002  C  G 

Résultat souhaité :

 1001  A  C  B  D       
 1002  A  E  B  F  C  G 

Le code VBA que j'utilise actuellement ne prend pas tout le contenu de la ligne correspondante. Il prend uniquement les données de la deuxième colonne et les déplace vers le haut.

Code VBA :

Sub Mergeitems()

    Dim cl As Range
    Dim rw As Range

    Set rw = ActiveCell

    Do While rw <> ""
        ' for each row in data set
        '   find first empty cell on row
        Set cl = rw.Offset(0, 1)
        Do While cl <> ""
            Set cl = cl.Offset(0, 1)
        Loop

        ' if next row needs to be processed...
        Do While rw = rw.Offset(1, 0)
            cl = rw.Offset(1, 1)       ' move the data
            Set cl = cl.Offset(0, 1)   ' update pointer to next blank cell
            rw.Offset(1, 0).EntireRow.Delete xlShiftUp   ' delete old data
        Loop

        ' next row
        Set rw = rw.Offset(1, 0)
    Loop
End Sub

1voto

Sigh Points 2558

J'aborderais probablement votre problème général (fusion de lignes) avec une macro entièrement différente, mais voici les lignes que vous pourriez vouloir modifier dans votre code :

cl = rw.Offset(1, 1)       ' move the data
Set cl = cl.Offset(0, 1)   ' update pointer to next blank cell
rw.Offset(1, 0).EntireRow.Delete xlShiftUp   ' delete old data

Essayez de les remplacer par ceci :

i = 1
Do While rw.Offset(1, i) <> "" 
    cl = rw.Offset(1, i)      
    Set cl = cl.Offset(0, 1)  
    i = i + 1
Loop
rw.Offset(1, 0).EntireRow.Delete xlShiftUp  'delete old data

Ergebnis:

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X