Occurence texte la plus fréquente dans une plage de cellules

Pat

XLDnaute Nouveau
Bonjour,
J'ai une plage de cellules avec des noms (texte). Je voudrais connaître par une formule:
- cellule 1: quel est le nom dont la fréquence est maximale, minimale, etc...
- cellule 2: renvoyer le nombre d'occurences correspondant à chacun des noms déterminés ci-dessus.
Je crois qu'il existe des formules comme MODE ou grande.valeur mais cela ne marche pas avec le texte.
Merci d'avance.
Date Présent1 Présent2 Présent3 Présent4 Présent5 Présent6
06/10/11 Petra Lukas Misa Rosti Barbora
13/10/11 Petra Lukas Rosti Masa Barbora Tomas
 

job75

XLDnaute Barbatruc
Re : Occurence texte la plus fréquente dans une plage de cellules

Bonjour Pat, bienvenue sur XLD,

Nommez Plage la plage (une colonne) concernée et voyez déjà ça :

- nom dont la fréquence est maximale :

Code:
=INDEX(Plage;EQUIV(MAX(NB.SI(Plage;Plage));NB.SI(Plage;Plage);0))
- nom dont la fréquence est minimale :

Code:
=INDEX(Plage;EQUIV(MIN(NB.SI(Plage;Plage));NB.SI(Plage;Plage);0))
Edit : salut Jacques :)

A+
 

job75

XLDnaute Barbatruc
Re : Occurence texte la plus fréquente dans une plage de cellules

Re, salut David :)

Oublié de préciser que les formules précédentes sont matricielles (validation par Ctrl+Maj+Entrée).

Maintenant pour les nombres d'occurences, toujours en matriciel :

Code:
MAX(NB.SI(Plage;Plage))

MIN(NB.SI(Plage;Plage))
Edit : j'avais été chercher midi à quatorze heures...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Occurence texte la plus fréquente dans une plage de cellules

Re, salut David :)

Aucune comparaison entre mes formules et les travaux superbes de JB et David.

D'autant que celles de mon post #3 s'appliquent uniquement à un vecteur ligne ou colonne.

Voici quand même une autre solution utilisant cette fonction VBA (Alt+F11) :

Code:
Function NOMFREQUENCE$(plage As Range, frequence&, ordre&)
Dim d As Object, ref, n&
Set d = CreateObject("Scripting.Dictionary")
For Each ref In plage
  If ref <> "" Then d(ref.Value) = ref.Value
Next
For Each ref In d.keys
  If Application.CountIf(plage, ref) = frequence Then
    n = n + 1
    If n = ordre Then NOMFREQUENCE = ref: Exit Function
  End If
Next
End Function
Formule en E10 à tirer à droite et vers le bas :

Code:
=NOMFREQUENCE(Plage;$E7;COLONNES($E10:E10))
Fichier joint.

A+
 

Pièces jointes

  • Fréquences(1).xls
    36.5 KB · Affichages: 190

david84

XLDnaute Barbatruc
Re : Occurence texte la plus fréquente dans une plage de cellules

Re
toujours en formules, en s'inspirant de la formule et de l'exemple fournis par Jacques :
se placer en B2, valider avec Ctrl, Maj et entrée et tirer la formule vers le bas :
Code:
=INDEX(champ;MODE(SI((champ<>"")*(NB.SI(B$1:B1;champ)=0);EQUIV(champ;champ;0))))
A+
 

Discussions similaires