Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/09/2006, 06:20
Avatar de 3pies
3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 5 meses
Puntos: 144
Si los rangos de datos son idénticos (por ejemplo de 50 valores cada uno de ellos, como en el ejemplo inicial), yo optaría por una fórmula como la que te indiqué. En caso contrario, es mejor utilizar una tabla anexa con los rangos de datos, y utilizar la función buscarv (con tabla de datos ordenados), tal y como te recomienda jchuk.

Si quieres saber lo que significa la fórmula que te puse incialmente, aquí te lo explico (o intento explicarlo):

Ya sabes que la fórmula condicional podría explicarse así:
=si(ocurre esto; entonces haz esto; sino haz esto otro)

Imagino que el problema lo tienes con el “entonces haz esto”, es decir, con la parte de en medio que es esta:

REDONDEAR.MAS(((A1-100)/50);0)*25

Para poder explicarlo, hay que ir por partes, y desmenuzar esa fórmula:

Cojamos primero A1-100.

¿Qué nos devuelve A1 – 100?. Pues ni más ni menos que la diferencia entre el valor de A1 y la cantidad de 100 . ¿Y por qué le restamos 100?. Pues porque 100 es la cantidad menor del rango inicial, para el cual deseas establecer ese valor de 25. Si en lugar de poner 25, para el rango entre 100 y 150, quisieras que pusiera 25 para el rango entre 50 y 150, entonces en la fórmula deberías poner 50, en lugar de 100 (porque 50 es el valor inicial del primer rango de datos).

Imaginemos que en A1 tenemos este valor: 233

Entonces, siguiendo con la fórmula A1-100:

233 – 100 = 133

Vale, vayamos a la segunda parte: Dividimos esa cantidad entre 50.

(A1-100)/50

¿Por qué dividirla entre 50?. Pues porque tus rangos de datos son idénticos y entre el valor máximo y el mínimo, la diferencia es 50. Es decir, entre 100 y 150 (primer rango de datos) hay 50. Entre 151 y 200, hay 50 (no 49, como parecería), y así sucesivamente. Es decir, siguen una progresión idéntica, cuyo término equidistante es 50, es decir, todos los rangos de datos son idénticos, y de 50 valores cada uno de ellos.

Siguiendo con el ejemplo, obtendríamos de esta parte de la fórmula (A1-100)/50, lo siguiente :

A1-100 = 133
133/50 = 2,66

Vale, ahora sabemos que hay 2,66 bloques (o 2,66 grupos, o 2,66 partes equidistantes) de 50 valores, entre 233 y 100. Eso significa lo siguiente:

De 100 a 150, es el primer bloque de esos 2,66.
De 151 a 200, es el segundo bloque de esos 2,66.
De 201 a 233, esa fracción de bloque de 0,66. En este último caso, nos interesa que en lugar de poner 0,66, nos ponga 1, porque para cualquier valor del rango que hay entre 201 y 233, sume otros 25 (y no solo si el valor es exactamente 250, porque solo para 250, esa división daría 3, en lugar de 2,X). Por eso redondeamos a la unidad siguiente con redondear.mas(cantidad;0)

Resumiendo, tenemos que redondear.mas(2,66;0) nos da 3.

Ahora ese 3 lo multiplicamos por 25, porque cada rango de datos (recuerda que hay 3 bloques de 50 o fracciones de 50) tiene como resultado 25.

Es decir:
Rango de 100 a 150: 25.
Rango de 151 a 200: 25 + 25 (o lo que es lo mismo, 25 por 2)
Rango de 201 a 250: 25 + 25 + 25 (o lo que es lo mismo, 25 por 3)

Por tanto, si el dato es 233, entonces tendrás como resultado 3*25, es decir, 75.

Respecto a tu segunda pregunta, puedes utilizar infinitos tramos o rangos, para esa fórmula, no solo 15 o 20. Si utilizas una tabla (sería recomendable, para los otros dos ejemplos que has puesto, pues no tienen rangos con valores equidistantes idénticos), y la función buscarv, puedes poner tantos rangos de datos como desees.

Salu2