1 votes

Excel : comment aligner les valeurs correspondantes entre deux colonnes et espacer les différences

J'ai deux colonnes de données qui se chevauchent et qui ressemblent à quelque chose comme ceci :

-------------------------
| Aardvarks  | Bears    |
| Bears      | Dogs     |
| Cats       | Giraffes |
| Giraffes   | Hippos   |
| Monkeys    | Rhinos   |
| Rhinos     | Zebras   |
-------------------------

Existe-t-il un moyen d'aligner les valeurs correspondantes entre les deux colonnes, tout en ajoutant des cellules vides là où il y a des différences, afin d'obtenir un résultat final comme celui-ci :

-------------------------
| Aardvarks |           |
| Bears     | Bears     |
| Cats      |           |
|           | Dogs      |
| Giraffes  | Giraffes  |
|           | Hippos    |
| Monkeys   |           |
| Rhinos    | Rhinos    |
|           | Zebras    |
-------------------------

J'ai vu des gens poser des questions similaires ici, mais tous s'appuient sur la Colonne A ayant une sorte de données "complètes" et la colonne B ayant des données incomplètes qui doivent être triées.

Mon problème est que les deux colonnes ont des données doubles et uniques (dans l'exemple ci-dessus, la colonne A n'a pas tous les animaux).

Existe-t-il un moyen d'aligner et de disposer les colonnes pour obtenir le résultat final que je recherche ?

2voto

Beej Points 31

Désolé de faire perdre du temps aux gens, mais après avoir fait encore plus de recherches en ligne, j'ai trouvé une solution à mon propre problème.

J'ai trouvé ce site ci-dessous qui propose une solution VBA au problème que je rencontrais. Le script a parfaitement fonctionné pour ce que j'espérais obtenir.

http://sites.madrocketscientist.com/jerrybeaucaires-excelassistant/text-functions/line-up-matches

0voto

Ben Points 21

Le site web semble être en panne... Heureusement, j'ai sauvegardé le VB utile l'année dernière.

Option Explicit

Sub LineEmUp()
'Author:    Jerry Beaucaire
'Date:      7/5/2010
'Summary:   Line up a random number of columns so all matching
'           items are on the same rows
Dim LC  As Long
Dim Col As Long
Dim LR  As Long
Application.ScreenUpdating = False

'Spot last column of data
    LC = Cells(1, Columns.Count).End(xlToLeft).Column

'Add new key column  to collect unique values
    Cells(1, LC + 1) = "Key"
    For Col = 1 To LC
        Range(Cells(2, Col), Cells(Rows.Count, Col)).SpecialCells(xlConstants).Copy _
           Cells(Rows.Count, LC + 1).End(xlUp).Offset(1)
    Next Col

    Columns(LC + 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(1, LC + 2), Unique:=True
    Columns(LC + 2).Sort Key1:=Cells(2, LC + 2), Order1:=xlAscending, Header:=xlYes

'Fill in new table headers w/formatting
    Range("A1", Cells(1, LC)).Copy Cells(1, LC + 3)

'Fill in new table values
    LR = Cells(Rows.Count, LC + 2).End(xlUp).Row
    With Range(Cells(2, LC + 3), Cells(LR, LC + 2 + LC))
        .FormulaR1C1 = "=IF(ISNUMBER(MATCH(RC" & LC + 2 & ",C[-" & LC + 2 _
                        & "],0)), RC" & LC + 2 & ", """")"
        .Value = .Value
    End With

'Cleanup/Erase old values
    Range("A1", Cells(1, LC + 2)).EntireColumn.Delete xlShiftToLeft
    Columns.Autofit
    Application.ScreenUpdating = True
End Sub

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