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: