Excel : cherche formule si doublon

marinak -  
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je n'ai pas réussi à trouver la formule pour un traitement de tableau lourd (67 000 lignes) avec un tri suivant:
dans la colonne A j'ai identifié les doublons,
pour faire le choix d'une seule ligne à garder, j'ai besoin de me référer à la colonne B de la même ligne, et ne retenir que la ligne où le chiffre de la colonne B est le plus élevé.

Illustration :
Colonne A Colonne B
Marie 23
Marie 12
Alexandre 10
Marie 17

Pour arriver à :
Colonne A Colonne B
Marie 23
Alexandre 10

Quel serait la formule à utiliser dans la colonne C ?
=nb.si ? ou autre chose ?

Merci d'avance!

A voir également:

2 réponses

Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
Bjr,

A mettre en C2 en formule matricielle (Ctrl+Shift+Entée au lieu de Entrée pour valider) puis à dérouler vers le bas:

=SI(MAX(SI(A:A=A2;B:B))=B2;"On garde";"On supprime")
0
marinak
 
Merci pour votre réponse.

Ça ne fonctionne pas, toute la colonne affiche "on supprime".

Il faut que la fonction puisse comparer les valeurs de la colonne B dans les lignes des mêmes valeurs de la colonne A : A1, A2 et A4 ayant la même valeur "Marie", vérifier quelle valeur est plus élevé - B1, B2 ou B4, et mettre "on garde" en face de celle-ci - C1
0
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
Cela fonctionne de mon côté.. vous êtes bien en formule matricielle ?

Sinon merci de joindre un document via www.cjoint.com pour voir ce qui cloche de votre côté.

Cdt,
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
Une formule matricielle sur 70000 lignes: je demande à voir la durée si du moins Excel ne plante pas
Bien qu'il faille penser Excel avant de penser VBA, tes 70000 lignes impliquent une solution par VBA

je suis parti de la ligne 2 (ent^te en ligne 1)et restitue en cellule F2 pour la démo. durée pour 4300 lignes: 5 à 6/100 de secondes
Option Explicit
'---------------
Sub unique_si_maxi()
Dim Derlig As Long, T_in
Dim Dico As Object
Dim Cptr As Long, Ref As String, Valeur As Double
Dim Start As Single

Application.ScreenUpdating = False
Start = Timer
Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in = Range("A2:B" & Derlig)
Set Dico = CreateObject("scripting.dictionary")

For Cptr = 1 To UBound(T_in)
Ref = T_in(Cptr, 1)
Valeur = T_in(Cptr, 2)
If Not Dico.exists(Ref) Then
Dico.Add Ref, Valeur
Else
If Dico.Item(Ref) < Valeur Then Dico.Item(Ref) = Valeur
End If
Next

Range("E2").Resize(Dico.Count) = Application.Transpose(Dico.keys)
Range("F2").Resize(Dico.Count) = Application.Transpose(Dico.items)

Application.ScreenUpdating = True
MsgBox UBound(T_in) & " lignes traitées en " & Timer - Start & " secondes"
End Sub


si ca convient, on mettra le tableau ou tu veux le mettre et je commenterai le code

La maquette de W
https://www.cjoint.com/c/FBykzzB8aQD

 Michel
0
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
Oui en effet je n'avais pas considéré la taille du document :s

Macro à privilégier donc ;)
0