jueves, 13 de diciembre de 2012

Evitar Duplicados en Varias Columnas


"Tengo una hoja en la que cada 4 columnas tengo que introducir los códigos de recibos (en total en tres columnas). Estos códigos no pueden repetirse y, en consecuencia, necesito que no permita introducir los códigos que ya se hayan introducido previamente".

Este problema es una derivada un poco más complicada del que ya traté en su día en el artículo "Evitar Datos Repetidos con Validación de Datos Personalizada". En dicho post veíamos como evitar introducir dos veces el mismo código pero dentro de una misma columna. En este nuevo caso, además de comprobar cada columna individualmente, debemos cotejar las distintas columnas entre si para cerciorarnos de que no estamos introduciendo datos repetidos.

 Partimos del siguiente ejemplo:



Y lo que queremos conseguir es que cuando introduzcamos un código que ya se haya utilizado, como se ve en la siguiente imagen, nos aparezca un mensaje de error que no nos permita utilizar dicho código:


Vamos a necesitar generar una matriz de comprobaciones para resolver este problema, matriz que situaré en el rango M2:R10. Antes de empezar a formular vamos a crear tres nombres. Para ello seleccionamos el rango discontinuo A1:A10 E1:E10 y I1:I10 y en la ficha Fórmulas pinchamos en Crear desde la selección. En la ventana que se abre seleccionamos Crear nombres a partir de los valores de la: Fila superior. De esta manera hemos creado los nombres Codigo1, Codigo2 y Codigo3 que se corresponden a cada una de las columnas de la entrada de datos.

Vamos a la celda M2 y escribimos la fórmula =CONTAR.SI(codigo1;A2)  y copiamos la fórmula hasta M10. De esta manera estamos contando cuántas veces está cada código introducido en la primera columna.

Hacemos lo mismo para el resto. Nos situamos en N2 y escribimos: =CONTAR.SI(codigo2;E2)  y copiamos hasta N10. Finalmente nos situamos en O2 y escribimos: =CONTAR.SI(codigo3;I2)  y copiamos hasta O10.

Procedemos ahora a comprobar si hay duplicados de unas columnas en otras. Para ello nos situamos en la celda P2 y escribimos la fórmula: =SI(ESERROR(BUSCARV(A2;codigo2;1;));0;1)   y la copiamos hasta la celda P10. Esta fórmula verifica si algún elemento de la primera columna se encuentra en la segunda columna. Si no se encuentra generará un error tipo N/A que lo convertimos en valor cero con el uso del condicional de la fórmula. En caso contrario, es decir, si está repetido, entonces el condicional le otorga un valor 1, como se puede ver al final de la fórmula.
Hacemos ahora la misma comprobación pero en la tercera columna. Nos situamos en Q2 y escribimos: =SI(ESERROR(BUSCARV(A2;codigo3;1;));0;1)   Finalmente comprobamos si hay valores repetidos de la columna 2 en la columna 3 con la siguiente fórmula en la celda R2: =SI(ESERROR(BUSCARV(E2;codigo3;1;));0;1)

El resultado obtenido es la siguiente matriz de comprobación:


Sólo nos queda analizar que resultados podemos permitir en esta matriz que garanticen que no se ha introducido el mismo código 2 veces:
En el caso de las columnas M, N, O los resultados permitidos serán cero o uno (cero en el caso de que todavía no hayamos introducido un código y uno en el caso de que lo hayamos introducido y no esté repetido (en cuyo caso sumaría 2).
En el caso de las columnas P, Q, R  el resultado permitido será cero, ya que si aparece un valor uno, por ejemplo, significará que hay una repetición de código de una columna en otra.

Seleccionamos el rango discontinuo A1:A10 E1:E10 y I1:I10 y vamos a la ficha Datos y pinchamos en Validación e datos. Dentro de la ventana que se abre elegimos Permitir Personalizada. En el recuadro Fórmula escribimos la fórmula que cumple con las condiciones analizadas, a saber:

=SUMAR.SI(M2:M10;">1")+SUMAR.SI(N2:N10;">1")+SUMAR.SI(O2:O10;">1")+
SUMA(P2:P10;Q2:Q10;R2:R10)=0

Y problema resuelto!

jueves, 22 de noviembre de 2012

Generar Nombres Aleatorios sin Repetición

"Tengo una lista con 50 nombres de poblaciones y necesito generar una muestra aleatoria de 6 de ellas pero sin que se repita ningún nombre".

No hay problema. Partimos del siguiente ejemplo:


En el rango G3:G22 tenemos la lista de poblaciones (utilizaremos 20 en vez de 50). En el rango C3:C8 es donde finalmente aparecerán la muestra aleatoria de 6 ciudades sin repetición.

Empezamos seleccionando el rango F3:F22 y con el rango seleccionado escribimos la fórmula: =ALEATORIO()  y acabamos pulsando Ctrl + Enter. De esta manera, hemos generado 20 números aleatorios comprendidos entre 0 y 1. Con el rango seleccionado (F3:F22) nos situamos en el cuadro de nombres (a la izquierda de la barra de fórmulas) hacemos clic dentro y escribimos el nombre numaleatorio y pulsamos Enter.

Nos situamos ahora en la celda E3 y escribimos la siguiente fórmula:
=JERARQUIA(F3;numaleatorio)

De esta manera estamos otorgando un número (entero) de orden a cada uno de los números aleatorios, como se puede ver a continuación:


Seleccionamos el rango E3:G22 y vamos al cuadro de nombres y le asignamos el nombre (lo escribimos) Ciudades. Ya sólo nos queda situarnos en la celda C3 y escribir la siguiente fórmula:
=BUSCARV(B3;ciudades;3;)    y la copiamos hasta C8.


Puede probar a pulsar la tecla F9 y se generarán nuevas muestras sin repetición.

martes, 13 de noviembre de 2012

Suma Dependiente de Varios Criterios

Descargar el Archivo

"Tengo un tabla con varios conceptos: zona; importe vendido; fecha de venta; etcétera. Necesito obtener una lista de registros únicos con la suma de ventas para cada uno de ellos poniéndole como condicionante extra que esté comprendido entre una fecha determinada y otra (que uno mismo pueda modificar en todo momento)."

Se puede solucionar por varias vías. La más sencilla es con Tablas Dinámicas pero también por medio de formulación haciendo uso de la función SUMAR.SI.CONJUNTO

Partimos del siguiente ejemplo:



Solución Con Tablas Dinámicas
Nos situamos en cualquier celda de la tabla del ejemplo y vamos a la ficha Insertar / Tabla dinámica. En la ventana que se abre le damos a aceptar  y estaremos en disposición de montar nuestra tabla dinámica. Como campo de fila ponemos Zona y como campo de columna ponemos Fecha. Finalmente como datos ponemos Unidades y el resultado obtenido será el siguiente:


Hacemos clic con el botón derecho del ratón encima de Fecha y seleccionamos Agrupar / Meses (si queremos ver otro desglose temporal haremos clic en otra opción como trimestral, semestral, etcétera):


Ya sólo nos quedaría filtrar el campo Fecha con la fecha inicial y final que nos interese:


Tras pulsar Aceptar obtendremos la información por zona y por mes para las fechas indicadas en el filtro:



Solución Con Fórmulas
Volviendo a nuestro ejemplo original, lo primero que vamos a hacer es Crear Nombres. Seleccionamos el rango B2:D26 y vamos a la ficha Fórmulas y seleccionamos Crear desde la selección. Se abrirá una ventana y marcamos Fila superior :


En nuestro cuadro de nombres (a la izquierda de la barra de fórmulas) aparecerán ahora los nombres creados, es decir, Zona, Fecha y Unidades, que utilizaremos a continuación en nuestra fórmula.

Generamos ahora una lista con los criterios que podremos utilizar; la zona de entrada de fechas y una lista de registros únicos, a saber:


Seleccionamos H3 y H4 y vamos a la ficha Datos y abrimos Validación de datos. Dentro de la ventana que se abre seleccionamos Permitir / Lista y en Origen marcamos el rango K2:K6 y pulsamos Aceptar. De esta manera tenemos ya listas desplegables en las celdas H3 y H4 con los criterios aplicables a las fechas. Introducimos las fechas deseadas en I3 e I4, por ejemplo el 1/1/2012 y el 1/6/2012. En H3 introducimos el criterio >= y en H4 el criterio <=. De esta manera le pediremos que nos muestre el detalle por zonas de las unidades vendidas entre dichas fechas:


Ahora vamos a aplicar la función SUMAR.SI.CONJUNTO para solucionar el problema. Esta función nace en la versión 2007 y lo que hace es sumar las celdas que cumplan con varios criterios. Su sintaxis es la siguiente:


SUMAR.SI.CONJUNTO(rango_suma; rango_criterios1; criterios1; [rango_criterios2; criterios2]; ...)

* Rango_suma: Argumento obligatorio. Una o más celdas para sumar, incluidos números o nombres, rangos o referencias de celda. Se omiten los valores en blanco o de texto.
* Rango_criterios1: Obligatorio. El primer rango en el que se evalúan los criterios asociados.
* Criterios1: Obligatorio. Los criterios en forma de número, expresión, referencia de celda o texto que define qué celdas del argumento rango_criterios1 se agregarán. Por ejemplo, los criterios se pueden expresar como 32, ">32", B4, "manzanas" o "32".
* Rango_criterios2; criterios2; … Opcionales. Rangos adicionales y sus criterios asociados. Se permiten hasta 127 pares de rangos/criterios.

Nos situamos en la celda H8 y escribimos la siguiente fórmula:

=SUMAR.SI.CONJUNTO(Unidades;Zona;G8;Fecha;$H$3&$I$3;Fecha;$H$4&$I$4)

Lo que le estamos pidiendo a excel con esta fórmula es que sume las unidades que dentro del rango zona (B3:B26) cumplan con el criterio G8 (en nuestro ejemplo La Coruña) y que además cumplan con los dos criterios de fecha indicados en la fórmula. Para evitar escribir datos dentro de la fórmula o en las celdas de fecha hemos utilizado & (CONCATENAR) para hacer más flexible el modelo. El resultado es el deseado:

martes, 30 de octubre de 2012

Generar Aleatorios que Sumen una Cifra Objetivo

"Necesito generar números aleatorios que sumen una cifra concreta ¿Es esto posible?"

Por supuesto que es posible. La solución es muy sencilla y muy similar a la planteada en mi post "Asignar % Aleatorio que Sume 100%", pero como tengo varios mails con esta pregunta aquí va la solución.

Supongamos que queremos generar, por ejemplo, 10 números aleatorios cuya suma resulte 75. Partimos del siguiente ejemplo:


En el rango E3:E12 vamos a generar los 10 números aleatorios. Para ello seleccionamos dicho rango y con el rango seleccionado escribimos en la barra de fórmulas:
 =ALEATORIO()    y terminamos pulsando Ctrl + Enter.

Nos situamos ahora en C14 y escribimos: =SUMA(C3:C12)   que será la comprobación de que los 10 números suman nuestra suma objetivo (en este ejemplo debe sumar 75).

Finalmente nos situamos en la celda C3 y escribimos la fórmula:
=(E3/SUMA($E$3:$E$12))*$C$1

Copiamos esta fórmula desde C3 hasta C12 y problema resuelto. Podemos pulsar la tecla F9 y comprobar que se generan distintas combinaciones de números aleatorios de suma 75, como vemos en los siguientes ejemplos:



También podemos cambiar la suma objetivo en C1, por ejemplo a 83, y seguirá funcionando:


jueves, 27 de septiembre de 2012

Repetir Etiquetas de Elementos en Tablas Dinámicas

"He leído el post de Rellenar Celdas en Blanco con Contenido de Celda Anterior y mi pregunta es si se puede solucionar de igual forma el mismo problema dentro de una tabla dinámica".

La respuesta es que no se puede solucionar de la misma manera, pero lo haremos de otra forma muy sencilla y directa. Partimos del siguiente ejemplo:


Lo que queremos conseguir es que dentro el campo Area todas las celdas tengan la etiqueta correspondiente, es decir, que en el rango A5:A8 ponga Area 1, en el rango A10:A11 ponga Area 2 y en el rango A13:A17 ponga Area 3. Para ello nos situamos en cualquier celda del campo Area, por ejemplo en A3 y pulsamos el botón derecho del ratón. El menú emergente que aparecerá será el siguiente, donde debemos elegir Configuración de Campo:

Aparecerá esta ventana:


Hacemos clic en la pestaña Diseño e impresión y en la ventana que se abre seleccionamos la opción Repetir etiquetas de elementos:


¡ Problema resuelto !

sábado, 8 de septiembre de 2012

Convertir VERDADERO Y FALSO en 1 y 0

"Tengo una tabla de números y quiero comprobar si son mayores que cierto valor. Con la fórmula que aplico consigo que me devuelva VERDADERO o FALSO pero me interesaría que me devolviera 1 (si verdadero) y 0 (si falso)".

Partimos del siguiente ejemplo:

Nos situamos en la celda E5 y escribimos la fórmula: =B5>$C$2
Copiamos dicha fórmula hasta E9 y hasta F9. El resultado será el siguiente:


Lo que queremos conseguir es que en el rango E5:F9 aparezcan 1 y 0 en vez de VERDADERO y FALSO. Para ello utilizaremos la función N. Esta función, entre otras cosas, convierte el valor VERDADERO en 1 y el valor FALSO en 0. Nos situamos en la celda E5 y corregimos la fórmula inicial dejándola de la siguiente manera: 
=N(B5>$C$2)
Tras copiar dicha fórmula en todo el rango (E5:F9) el resultado será el deseado:

jueves, 6 de septiembre de 2012

Promedio Acumulado Dinámico

"Tengo una tabla de ventas mensuales desde 2010. Cada mes introduzco la cifra correspondiente a dicho mes. Me gustaría calcular el promedio de ventas acumulados hasta el último mes del que haya introducido un dato y que me lo compare con el promedio acumulado al mismo mes de los años anteriores".

Para solucionar este caso vamos a utilizar las funciones PROMEDIO, DESREF y CONTAR. Partimos del siguiente ejemplo:

Lo que queremos conseguir es que en el rango O4:O6 nos aparezcan los promedios de ventas acumulados hasta agosto (ya que es el último mes introducido) de 2012, 2011 y 2010. En el momento que introduzcamos el dato correspondiente a las ventas de septiembre de 2012 que recalcule automáticamente el promedio acumulado hasta dicho mes para los 3 ejercicios.

Lo primero que debemos resolver es cuántos meses hemos ingresado. Para ello utilizaremos la función CONTAR. Si nos colocamos en la celda O4 y escribimos la fórmula: =CONTAR(B4:M4) el resultado será 8, ya que son las celdas con contenido (los datos de ventas de los 8 meses).

Para calcular el Promedio excel necesita un rango. En nuestro caso el rango será desde la celda B4 y hasta la última celda que tiene contenido. Con la función CONTAR hemos obtenido el número de celdas que debemos promediar. Haciendo uso ahora de la función DESREF solucionamos el problema. La fórmula definitiva en la celda O4 es:

=PROMEDIO(B4:DESREF(A4;;CONTAR($B$4:$M$4)))

Para terminar copiamos la fórmula en las celdas O5 y O6 y problema resuelto:


jueves, 23 de agosto de 2012

Resaltar Duplicados por Colores

"Necesitaría destacar con distintos colores los valores repetidos dentro de una lista".

Supongamos que partimos del siguiente ejemplo:


Lo que buscamos es que un determinado valor, por ejemplo el 9, que se repite en varias ocasiones, se coloree del mismo color en aquellas celdas en las que se repite. Para ello vamos a aplicar una solución bastante sencilla utilizando el Formato Condicional.
Para ello seleccionamos el rango B3:B18 y vamos a Formato Condicional / Resaltar reglas de celdas / Duplicar valores:


En la ventana que se abre elegimos Único y Formato personalizado (dentro de las dos listas desplegables que aparecen en la ventana). Finalmente elegimos rellenar con el color blanco y aceptamos. De esta manera lo que hemos hecho es que los valores únicos (los no duplicados) mantengan el fondo blanco en nuestra hoja.

A continuación, y manteniendo seleccionado el rango B3:B18, volvemos a Formato Condicional y abrimos la opción Escalas de color y elegimos, por ejemplo, la primera opción. El resultado será el mostrado en la siguiente imagen donde, como se puede observar, cada valor repetido tiene asignado un color determinado, lo que facilita su localización visual:

lunes, 9 de julio de 2012

Ordenar Automáticamente una Lista

"Tengo una tabla con cifras de ventas de distintas zonas y me gustaría generar otra tabla idéntica que me ordenara automáticamente de mayor a menor dichas zonas en función de las ventas logradas".

Vamos a ello. Utilizaremos tres funciones, a saber: K.ESIMO.MAYOR, INDICE y COINCIDIR. Partimos del siguiente ejemplo:

Lo que queremos conseguir es que tras realizar las fórmulas necesarias obtengamos una copia de la lista original pero ordenada en base a la cifra de ventas:

Lo primero que vamos a hacer es crear nombres para los dos rangos que utilizaremos dentro de nuestras fórmulas. Para ello seleccionamos el rango B3:B13 y en el cuadro de nombres (a la izquierda de la barra de fórmulas) escribimos el nombre ZONA. Hacemos lo mismo con el rango C3:C13 y le damos el nombre VENTAS.

Nos situamos ahora en la celda G3 y escribimos la siguiente fórmula:
=K.ESIMO.MAYOR(ventas;E3)   y copiamos dicha fórmula hasta la celda G13.


La función K.ESIMO.MAYOR  devuelve el k-ésimo mayor valor de un conjunto de datos. En nuestro ejemplo el conjunto de datos es el rango VENTAS y al indicarle como segundo argumento de la función E3 le estamos pidiendo el primer valor mayor de dicho conjunto (y así sucesivamente en la celda G4, G5, etcétera). De esta manera obtenemos una lista ordenada de mayor a menor de las ventas. Ya sólo nos queda colocar a la izquierda la zona con la que se corresponden dichas ventas.

Nos situamos ahora en la celda F3 y escribimos la fórmula:
=INDICE(zona;COINCIDIR(G3;ventas;0))


La función COINCIDIR nos proporciona el número de fila en el que se encuentra cada cifra de ventas en la tabla original. Introduciendo este dato en la función INDICE como argumento de número de fila ya tenemos resuelto el problema de localizar la zona con la que se corresponde cada cifra de ventas.

Ahora, cada vez que modifiquemos alguna cifra en la tabla original la tabla de la derecha se reorganizará automáticamente. Puede comprobarlo escribiendo, por ejemplo, 400 en Galicia y 600 en Madrid. El resultado será esta otra tabla:

martes, 3 de julio de 2012

Contar Registros Únicos

"Tengo más de 1.000 registros (números) en una columna. Muchos de ellos están repetidos y lo que me gustaría es poder contar, con fórmulas, cuántos son únicos".

Esta es la pregunta de mi querido hermano Santi a quién, evidentemente, le dedico este post (que generoso soy...). Hay diversas soluciones. Una de ellas sería haciendo uso de los Filtros Avanzados, como ya describí en mi post "Copiar Registros Únicos". También podemos generar una Tabla Dinámica y aplicar la función CONTAR para ver el número de registros únicos. Pero buscamos una solución con fórmula (no con herramientas). Para ello vamos a utilizar las siguientes funciones: Y, CONTAR, CONTAR.SI y Fórmulas Matriciales. Partimos del siguiente ejemplo:

Lo que vamos a hacer en el rango C3:C20 es comprobar si cada uno de los valores que hay en el rango B3:B20 es único o no. Para ello vamos a utilizar una fórmula matricial que, como ya sabéis, se caracteriza porque al finalizar pulsamos Ctrl + Shift + Enter. Nos situamos en la celda C3 y escribimos:
=Y(B3<>$B$2:B2) y acabamos pulsando Ctrl+Shift+Enter, lo que convierte esta fórmula en:
{=Y(B3<>$B$2:B2)}   Copiamos C3 hasta C20.

En esta fórmula hay varias cuestiones importantes:

1. Al poner dólares (referencias absolutas) en el primer término del rango B2:B2, quedando como $B$2:B2 conseguimos que cuando copiemos esta fórmula hacia abajo el rango se vaya ampliando, ya que el origen se mantiene fijo ($B$2) mientras que el segundo término se va ampliando a B3, B4, etcétera.

2. Con la fórmula matricial conseguimos comparar una celda contra todas las que le "quedan por encima". Por ejemplo, en la celda C8 la fórmula que aparecerá será:
{=Y(B8<>$B$2:B7)}
Esta fórmula está comprobando si la celda B8 es distinta de B2, B3, B4, B5, B6 y B7. En el caso que esto sea cierto excel devolverá el resultado de VERDADERO (FALSO en el caso contrario) como se observa a continuación:

Una vez hemos conseguido diferenciar los registros únicos la solución es muy sencilla. Preparamos la siguiente salida de datos:

Escribimos las siguientes fórmulas:
En la celda F3, para contar los registros totales  =CONTAR(B3:B20)
En la celda F4, para contar los registros únicos  =CONTAR.SI(C3:C20;VERDADERO)

Como se puede ver, existen 18 registros en total pero sólo 9 son únicos, a saber: 10, 20, 30, 40, 50, 60, 70, 80 y 90.

He propuesto esta solución porque me parece razonablemente sencilla de comprender y desarrollar. Pero se podría solucionar con una única fórmula como propone JLD en su blog.  La fórmula sería: 
{=SUMA(1/CONTAR.SI(B3:B20;B3:B20))}

Por aquello de no apropiarme de lo que no es mío, puedes encontrar la explicación a esta fórmula en:
http://jldexcelsp.blogspot.com.es/2007/08/contar-valores-nicos-en-un-rango-de.html

sábado, 30 de junio de 2012

Redondear en Excel

A menudo me preguntáis sobre las distintas opciones de redondeo que existen en Excel. En el siguiente post vamos a ver las diversas funciones existentes al respecto. En concreto vamos a utilizar las funciones REDONDEAR, REDONDEA.IMPAR, REDONDEA.PAR, REDONDEAR.MENOS, REDONDEAR.MAS, REDOND.MULT y TRUNCARPartimos del siguiente ejemplo:


REDONDEAR  
Sintaxis: REDONDEAR(número; núm_decimales)
Esta función redondea un número, en nuestro ejemplo los números existentes en el rango B5:B12, a un número de decimales especificado. Nos situamos en la celda C5 y escribimos la fórmula:
=REDONDEAR(B5;$C$2)

REDONDEA.IMPAR
Sintaxis: REDONDEA.IMPAR(número)
Redondea un número positivo hacia arriba y un número negativo hacia abajo hasta el próximo entero impar. Nos situamos en D5 y escribimos la siguiente fórmula:
=REDONDEA.IMPAR($B5)

REDONDEA.PAR
Sintaxis: REDONDEA.PAR(número)
Redondea un número positivo hacia arriba y un número negativo hacia abajo hasta el próximo entero par. Nos situamos en E5 y escribimos la siguiente fórmula:
=REDONDEA.PAR($B5)


En la imagen podemos observar el resultado de aplicar estas tres funciones:



REDONDEAR.MENOS
Sintaxis: REDONDEAR.MENOS(número; núm_decimales)
Redondea un número hacia abajo, en dirección hacia cero. La función REDONDEAR.MENOS es similar a la función REDONDEAR, excepto que siempre redondea un número acercándolo a cero. Nos situamos en la celda F5 y escribimos la siguiente fórmula:
=REDONDEAR.MENOS($B5;F$2)

REDONDEAR.MAS
Sintaxis: REDONDEAR.MAS(número; núm_decimales)
Redondea un número hacia arriba, en dirección contraria a cero. La función REDONDEAR.MAS es similar a la función REDONDEAR, excepto que siempre redondea al número superior más próximo, alejándolo de cero. Nos situamos en la celda G5 y escribimos la siguiente fórmula:
=REDONDEAR.MAS($B5;G$2)


REDOND.MULT
Sintaxis: REDOND.MULT(número; múltiplo)
Redondea un número al múltiplo deseado. REDOND.MULT redondea hacia valores positivos, hacia arriba, si el residuo de dividir número entre múltiplo es mayor o igual a la mitad del valor de múltiplo. Nos situamos en la celda H5 y escribimos la siguiente fórmula:
=REDOND.MULT($B5;H$2)

TRUNCAR
Sintaxis: TRUNCAR(número; [núm_decimales])
Trunca un número a un entero, suprimiendo la parte fraccionaria de dicho número. TRUNCAR y ENTERO son similares ya que ambos devuelven enteros. TRUNCAR suprime la parte fraccionaria del número. ENTERO redondea los números al entero menor más próximo, según el valor de la porción fraccionaria del número. ENTERO y TRUNCAR son diferentes solamente cuando se usan números negativos: TRUNCAR(-4,3) devuelve -4, pero ENTERO(-4,3) devuelve -5 porque -5 es el número entero menor más cercano.
Nos situamos en la celda I5 y escribimos la siguiente fórmula:
=TRUNCAR($B5;I$2)

En la imagen podemos observar el resultado de aplicar estas cuatro nuevas funciones:


lunes, 28 de mayo de 2012

Validación de Múltiplos

"Necesitamos que al realizar la introducción de cantidad en la Entrada de Datos sólo permita introducir cantidades múltiplos de un determinado número (por ejemplo 50)".


¡¡Lo primerísimo hoy es felicitar a mi maravillosísima mujercita que está de cumpleaños!!

Y ahora a trabajar un poquito que buena falta nos hace... Este problema se puede solucionar de diferentes maneras. Vamos  a resolverlo con dos fórmulas distintas:

1. Solución con Validación de Datos y la función REDOND.MULT

Partimos del siguiente ejemplo:


Lo que queremos es que excel nos permita introducir cantidades en C2 múltiplos de la indicada en E3. Para ello nos situamos en la celda C2 y vamos a la ficha Datos y seleccionamos Validación de datos. En Permitir seleccionamos Personalizada. En Fórmula escribimos la siguiente:

=C2=REDOND.MULT(C2;E3)


Pulsamos Aceptar y ya está. A partir de este momento, y como se puede ver en las siguientes imágenes, excel sólo permitirá introducir en C2 números múltiplos de aquel que indiquemos en la celda E3. En nuestro ejemplo sólo permitirá múltiplos de 50, esto es, 50, 100, 150, 200, etcétera.



La función REDOND.MULT redondea un número al múltiplo deseado. Su sintaxis es REDOND.MULT(numero;multiplo) donde numero es el argumento del valor que se quiere redondear y multiplo el argumento del múltiplo al que se quiere redondear el número.



2. Solución con Validación de Datos y la función RESIDUO 

Seguimos exactamente los mismos pasos pero la fórmula que escribimos en la Validación de datos es:

=RESIDUO(C2;E3)=0


La sintaxis de la función RESIDUO es RESIDUO(número; núm_divisor) Esta función devuelve el residuo o resto de la división entre número y núm_divisor. Cuando un número es múltiplo de otro, al dividirlos su resto o residuo es cero, que es precisamente lo que contrastamos con la fórmula propuesta.