Excel : cherche formule si doublon
marinak
-
Theo.R Messages postés 575 Date d'inscription Statut Membre Dernière intervention -
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!
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:
- Excel : cherche formule si doublon
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
2 réponses
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:
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")
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
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
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
Ç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
Sinon merci de joindre un document via www.cjoint.com pour voir ce qui cloche de votre côté.
Cdt,