Discrétisation non arrondie de nombres

Bonjour,

je bloque sur un problème pouvant sembler simple...

... mais ne l'étant à priori pas

je dispose d'une suite de nombre (de -50 à +50) avec décimales et souhaites les discrétiser de 0,5 en 0,5.

Le soucis est que cette discrétisation ne correspond pas à un arrondi : je change de classe à 0,3 et 0,7

par exemple:

1,1 doit donner 1

1,29 doit donner 1

1,3 doit donner 1,5

27,7 doit donner 27,5

-3,71 doit donner -4

etc.

le coté négatif ou positif se gère facilement avec ABS().

pour la discrétisation, c'est moins simple.

- Ma première approche a été d'user du SI mais il y a trop de critères. On pourrait faire les calculs sur plusieurs colonnes pour travailler sur des tranches. Ça marche sans être élégant.

- en second lieu, j'ai tenté de concaténer l'unité avec une décimale arrondie en utilisant la fonction STXT mais cette fonction accepte visiblement mal les formules (>= et OU() par exemple) car elle reconnait mon nombre comme du texte).

- en dernier point, j'ai associé du si avec du stxt pour déterminer une décimale de 0, 5 ou 10 puis additionné le chiffre des unités avec cette décimale. le résultat est probant sauf pour les valeurs n,7 exactement qui devraient être arrondies à n,5 et le sont à n+1. Je continue à ne pas trouver ça très élégant.

formule de la première approche pour une petite partie de la plage :

=SI(ABS(P17)>=0.3;SI(ABS(P17)>0.7;SI(ABS(P17)>=1.3;SI(ABS(P17)>1.7;SI(ABS(P17)>=2.3;SI(ABS(P17)

>2.7;SI(ABS(P17)>=3.3;SI(ABS(P17)>3.7;SI(ABS(P17)>=4.3;SI(ABS(P17)>4.7;"trop";4.5);4);3.5);3);2.5);2);

1.5);1);0.5);0)*P17/ABS(P17)

Formule complète de la dernière approche :

=(ENT(ABS(E22))+SI(STXT(ABS(E22);3;1)="0";0;SI(STXT(ABS(E22);3;1)="1";0;SI(STXT(ABS(E22);3;1)="2";

0;SI(STXT(ABS(E22);3;1)="7";1;SI(STXT(ABS(E22);3;1)="8";1;SI(STXT(ABS(E22);3;1)="9";1;0.5)))))))*E22/ABS(E22)

Merci à celles ou Ceux qui auront pris un peu de temps (voir de plaisir) à chercher la solution.

Cher Baron,

pouvez-vous tester ma modeste contribution à votre gloire?

=SI(A1-ENT(A1)<0,3;ENT(A1);SI(A1-ENT(A1)>0,7;ENT(A1)+1;ENT(A1)+0,5))

Serviteur

A+

Bonjour et bienvenue sur le forum

Bonjour à tous

Un autre essai, à tester, variante de Curulis :

=ENT(A5)+SI(ET(A5-ENT(A5)>=0,3; A5-ENT(A5)<0,7);0,5)

Bye !

Bonjour,

Je suis vert de ne pas y avoir pensé (et bien content que vous l'ayez fait pour moi ).

La seconde formule proposée est plus courte mais ne gère pas l'arrondi supérieur à compter du >x,7.

La première fonctionne parfaitement, y compris pour les chiffres négatifs. c'est propre et parfait.

Merci

Rechercher des sujets similaires à "discretisation arrondie nombres"