Excel : cherche formule si doublon

Fermé
marinak - 23 févr. 2016 à 17:43
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - 24 févr. 2016 à 13:34
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 vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
23 févr. 2016 à 17:47
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
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 vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
24 févr. 2016 à 12:06
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 24/02/2016 à 11:26
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 vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
24 févr. 2016 à 13:34
Oui en effet je n'avais pas considéré la taille du document :s

Macro à privilégier donc ;)
0