Compter des séries de caractères dans une plage de données Excel

Bonjour,

J'ai une plage de données (sur une ligne excel), qui contiennent 3 valeurs différentes ("N", "V", "D"). Par exemple : A1 = "V", A2 = "D", A3 = "N",.... A50 = "D"

La ligne dispose de 40 à 50 valeurs.

La ligne correspond à une chronologie (colonne 1 correspond au jour 1, colonne 2 au jour 2,...)

Dans cette plage de données, je souhaite compter les séries de "V" et "D" avant que n'intervienne un "N". Et en plus, je souhaite connaître les valeurs de ces séries. Par exemple, si ma plage de données (11 valeurs) est la suivante : "D,V,V,V,V,N,V,D,D,V,D,V,N" , je souhaite savoir que j'ai deux séries : une série de 5 ("D,V,V,V,V") et une série de 6 ("V,D,D,V,D,V").

Je me demande si j'ai une formule me permettant de faire ce calcul ou si je dois passer par une autre solution (macro).

Si oui, je ne me suis jamais formé sur VBA, une personne pourrait m'éclairer?

Par avance, merci beaucoup!

Et n'hésitez pas si vous avez des questions.

13excel.xlsm (5.72 Ko)

Bonsoir,

Pour connaitre le nombre de suites :

=NB(FREQUENCE(SI($B$4:$AX$4<>"N";COLONNE($B$4:$AX$4));SI($B$4:$AX$4="N";COLONNE($B$4:$AW$4))))

Pour les détailler :

=FREQUENCE(SI($B$4:$AX$4<>"N";COLONNE($B$4:$AX$4));SI($B$4:$AX$4="N";COLONNE($B$4:$AW$4)))

(si ancienne version, entrer en matricielle les 2 formules).

À noter que la dernière plage (seconde fonction COLONNE) s'arrête une cellule avant la fin.

A+

Merci beaucoup OOoiste.

Très certainement m'y prends-je mal, car j'ai essayé de comprendre la logique de la construction de ta formule, à cause de mon inexpérience sur excel je je n'ai pas tout compris. Lorsque je copie les formules (après avoir fait CTRL+MAJ+ENTREE) dans la cellule AY4 (formule 1) et AZ4 (formule 2), j'ai les réponses suivantes :

formule 1 = "8". La formule compte effectivement le nombre de "N". Si je souhaite avoir les séries de "V" ou "D" avant l'apparition d'un "N" supérieures à "x" (x étant un nombre entier), est-ce toujours possible avec cette structure de formule? Par exemple si je souhaite avoir toutes les séries de "V" ou de "D" supérieures à 3 avant l'apparition d'un "N".

formule 2 = "0". Je pense que je fais quelque chose de mal, mais je n'ai pas trouvé quoi.

J'ai joint le tableau excel.

Encore merci et bonne année.

14excel.xlsx (10.64 Ko)

Bonjour à tous !

Pouvez-vous préciser, dans votre profil, la nature de votre produit Excel (2010 ? 2016 ? 365? etc....) ?

Pour le "fun" avec Excel 365 (Insider ?), une formule unique et dynamique :

=LET(
t_;B4:AX4;

m_Nbre;BYROW(FRACTIONNER.TEXTE(JOINDRE.TEXTE(;;SI(t_<>"N";t_;";"));;";");LAMBDA(r;NBCAR(r)));
m_List;TRIER(UNIQUE(FILTRE(m_Nbre;m_Nbre<>0)));
m_NbreSerie;BYROW(m_List;LAMBDA(r;NB(FILTRE(m_Nbre;m_Nbre=r))));
m_ET;{"Longueur séries"\"Nbre séries"};
m_PT;ASSEMB.H("Total";SOMME(m_NbreSerie));

ASSEMB.V(m_ET;ASSEMB.H(m_List;m_NbreSerie);m_PT)
)

Qui retourne ce tableau :

image

Ta réponse me confirme que ta version ne prend pas en charge les matrices dynamiques. D'où l'utilité de le renseigner...

La première formule qui a la forme :

=NB(la formule frequence hyper compliquée) renvoie le nombre total de suites

si tu veux le nombre de suites supérieures à x, il suffit de remplacer NB par NB.SI en principe, mais dans Excel NB.SI ne semble pas gérer les matrices a contrario de LibreOffice ou OpenOffice qui le font depuis des décennies.

On va donc passer par un SOMMEPROD :

=SOMMEPROD(1*(la formule frequence hyper compliquée>x))

Pour la liste des suites, ici aussi lorsqu'on entre FREQUENCE et valide en matricielle, Excel ne renvoie qu'une cellule alors que LO renvoie une matrice.

Pas de problème, INDEX combiné avec LIGNE permet de renvoyer chaque valeur de FREQUENCE :

=SIERREUR(INDEX(la formule frequence hyper compliquée ;LIGNE(A1));"") validée en matricielle et recopiée vers le bas renverra la liste.

J'ai rajouté un SIERREUR car on connait le nombre de lignes (qui est variable) à l'avance.

A+

@JFL, tu as une version FR avec le point comme séparateur décimal ?

Parce qu'avec ma version, il faut que je remplace le \ dans la constante matricielle par un point.

Bonjour à tous de nouveau !

@JFL, tu as une version FR avec le point comme séparateur décimal ?

Parce qu'avec ma version, il faut que je remplace le \ dans la constante matricielle par un point.

Absolument !

Merci à vous deux, j'ai encore une incertitude :

J'ai appliqué ta formule SOMMEPROD. J'ai pris x="5".

La formule sur mon excel en PJ me sort 41. Or elle devrait me sortir 2 (Il y a une série de 15 et une série de 8).

Une hypothèse : je n'ai pas placé le ">5" exactement au même endroit où tu l'as mis dans la formule, mais si je le positionne ailleurs, je me retrouve avec une valeur = "0". J'ai fait plusieurs tests.

11excel.xlsx (10.97 Ko)

Décale le >5 d'une parenthèse vers la droite et, surtout, vire-moi ces guillemets autour du 5.

Rechercher des sujets similaires à "compter series caracteres plage donnees"