Comparer liste

lienad

XLDnaute Occasionnel
Bonjour,
Je souhaiterais "comparer" 2 listes et identifier les éléments différents.
Vous trouverez un exemple joint
Cdt
 

Pièces jointes

  • Comparer.xls
    15.5 KB · Affichages: 30

job75

XLDnaute Barbatruc
Re,

Formule plus simple :
Code:
=NON(SOMME(SI($A$4:$A$7=$H4;$B$4:$F$7)))*$I4
C'est une formule matricielle mais qui ne nécessite pas de validation particulière s'agissant d'une MFC.

Fichier joint.

A+
 

Pièces jointes

  • Comparer(1).xls
    61.5 KB · Affichages: 20

job75

XLDnaute Barbatruc
Bonjour lienad, JHA, le forum,
Quoi qu'il en soit la formule ne permettra pas de générer une liste de valeur.
Voyez ce fichier (2) avec cette formule matricielle en K4 :
Code:
=INDEX(H$1:H$8;PETITE.VALEUR(SI($I$4:$I$8*ESTERREUR(1/SOUS.TOTAL(3;DECALER($B$4:$F$4;EQUIV($H$4:$H$8;$A$4:$A$7;0)-1;)));LIGNE($H$4:$H$8));LIGNES(K$4:K4)))
A valider par Ctrl+Maj+Entrée et propager sur K4:L8.

Les valeurs d'erreur sont masquées (police blanche + MFC).

Bonne journée.
 

Pièces jointes

  • Comparer(2).xls
    64 KB · Affichages: 20

job75

XLDnaute Barbatruc
Re,

Notez qu'on peut utiliser le VBA, voyez le fichier joint et cette fonction (matricielle) :
Code:
Function Compare(plage1 As Range, plage2 As Range)
Dim t, d As Object, i&, ncol%, j%, a, b
t = plage1
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
    If t(i, 2) <> "" Then d(t(i, 1)) = t(i, 2)
Next i
t = plage2
ncol = UBound(t, 2)
For i = 2 To UBound(t)
    If d.exists(t(i, 1)) Then
        For j = 2 To ncol
            If t(i, j) <> "" Then d.Remove t(i, 1): Exit For
        Next j
    End If
Next i
ReDim t(plage1.Rows.Count - 1, 1) 'base 0
If d.Count Then
    a = d.keys: b = d.items
    For i = 0 To UBound(a): t(i, 0) = a(i): t(i, 1) = b(i): Next i 'transposition
End If
For i = d.Count To UBound(t): t(i, 0) = "": t(i, 1) = "": Next i
Compare = t 'matrice
End Function
Mais notez que le recalcul de la feuille prend 3,2 millisecondes chez moi.

Contre 0,2 milliseconde avec le fichier (2) du post précédent, 16 fois plus rapide.

A+
 

Pièces jointes

  • Comparer par VBA(1).xls
    73 KB · Affichages: 17

Discussions similaires

Réponses
2
Affichages
92

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16