Descuadre de un 'miserable' céntimo en un cálculo matemático

No comprendo esto, y me desespera:

En una celda de una determinada hoja -en concreto la Q18, siendo ser exactos- está dispuesto el valor numérico 1408,888, aunque 'visualmente' y redondeándolo Excel muestra el guarismo 1408,89.

Bien.

Para llevar determinado valor aritmético que derivará del valor anterior a la celda Q28 -en concreto el valor de Q18 menos su 33 por ciento- tengo escrito el siguiente código:

Range("Q28").Value = Range("Q18").Value - Range("R20").Value * Range("Q18").Value / 100

Pues bien, el resultado que me ofrece la fórmula cuando pego su resultado en la Q28 -habiéndole indicado antes a través de un InputBox que el valor que va a ir a la R20 es 33- es 943,96 en lugar de los 943,95 reales.

Y es que creo que pese a que le digo -O CREO DECIRLE!!!- que tome el valor de la Q18 -el real, con tres decimales-, la fórmula hasta el pegado en la Q28 yo diría que toma el valor redondeado : 1408,89-(33*1408,89/100)=943,9563, [redondeado 943,96], pues si tomase los tres decimales, calcularía:  1408,888-(33*1408,888/100)=943,6446, [redondeado 943,95].

¿Qué hago mal? ¿Cómo fuerzo a que tome los tres decimales reales?

3 respuestas

Respuesta
1

Increíble -al menos para mí-!     : - 0

Resulta que en un muy determinado cálculo aritmético -el que casi con exclusividad he relatado en mi pregunta- si el valor inicial con el que opero aritméticamente tiene formato moneda, le suma un céntimo :-O al resultado calculado, con idénticas operaciones aritméticas, a si el formato de la celda inicial es número.

Ciertamente el tema me descoloca absolutamente.

Si no hay otro remedio prescindiré de dar formato moneda a las celdas origen de datos... pero: ¿Habría alguna forma de darles ese formato de moneda, después?, es decir, ¿una vez efectuadas las operaciones matemáticas que ocasionaban la distorsión comentada?

Respuesta
1

Podrías utilizar la función Round en tu primer fórmula mostrada aquí:

Range("Q28").Value = ROUND(Range("Q18"),3) - Range("R20").Value * ROUND(Range("Q18"),3) / 100

Esto te devolverá el valor: 943,95496, al que podrás redondear a 2 o 3 según el formato aplicado.

En mi caso, aplico formato con 2 decimales, lo que me devuelve: 943,95

[Q28].NumberFormat = "$ #,##0.00"

ROUND se puede aplicar a una sola celda (como lo solicitas aquí) o a todo el resultado de cualquier cálculo.

¡Gracias!  Elsa!!!  : - )

Finalmente he resuelto con la línea:   Range("P14:S18").NumberFormat = " #,##0.00 €"

Respuesta
1

Te invito a SUSCRIBIRTE a mi canal de YouTube:

Excel y Macros

Ahí encontrarás más sobre Excel y Macros:

https://www.youtube.com/channel/UCs644-v3ti4SF7zE_bt_YXA 

Comparte los enlaces en tus redes sociales.


Revisa si tienes desactivada la casilla precisión en pantalla:

De esa manera no importa lo que veas en pantalla (1408,89), los cálculos se realizarán con el valor "real" de la celda (1408,888)


Comparte los enlaces en tus redes sociales.


Comenta...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas