Mostrando entradas con la etiqueta Excel Avanzado. Mostrar todas las entradas
Mostrando entradas con la etiqueta Excel Avanzado. Mostrar todas las entradas

jueves, 23 de octubre de 2014

Filtros avanzados en Excel: Revisando un caso aplicado


Los filtros avanzados son herramientas muy útiles y rápidas de usar, aunque cuenta con algunas limitaciones. Se usan cuando el filtro personalizado no nos permite realizar el filtro deseado.El comando filtros Avanzados funciona de forma diferente del comando Filtrar en varios aspectos importantes.
  • Muestra el cuadro de diálogo Filtro avanzado en vez del menú de Autofiltro.
  • Los criterios avanzados se escriben en un rango de criterios independiente en la hoja de cálculo y sobre el rango de celdas o la tabla que desee filtrar. Microsoft Office Excel utiliza el rango de criterios independiente del cuadro de diálogo Filtro avanzado como el origen de los criterios avanzados.

Revisando el caso:



El vídeo adjunto muestra una manera sencilla de realizar un filtrado de una gran cantidad de datos. Podemos simplemente aplicando los filtros avanzados, realizar un manejo de datos de manera ordenada sin errores. Cabe destacar que la importancia radica en ingresar de manera inequívoca los rangos, las condiciones que quiero aplicar y si quiero o no realizar el filtrado en una pestaña distinta a la que contiene los datos o si quiero que el filtrado de realice en la misma pestaña.


Revisando paso a paso:

Para comenzar, es necesario identificar donde tengo los datos, para el caso del vídeo, los datos se encuentran en la pestaña Postulantes.


Luego debo identificar donde dejaré los datos, en este caso los dejaremos en la próxima pestaña, Consultas.



Luego cuando procedemos a realizar las consultas, se coloca un encabezado con las condiciones que queremos cumplir (en la pestaña consultas), en ese caso, la primera consulta requería que el establecimiento sea municipal y que en la prueba haya obtenido más de 700 puntos.  Se deben recordar que para que Excel pueda reconocer que yo quiero que el establecimiento sea Municipal y la prueba de lenguaje sea mayor a 700 puntos, el encabezado de la consulta debe ser igual a los encabezados de la tabla donde se encuentran los datos, es decir:





Para proceder a realizar las demás consultas se realizan de la misma manera, siguiendo los mismo procedimientos pero teniendo en cuenta, tal y como se muestra en el vídeo que algunas tienen condicional "y" y otras condicional "o".

La utilización de estos filtros, permite a diferencia de los filtros normales, realizar filtraciones de datos con muchas condiciones, cumpliendo también los condiciones y/o. 

Autores: Leslye Marinao / Yanara Molina / Francisca Ulloa.
Leer más...

jueves, 6 de septiembre de 2012

Administrador de nombres y la opción "Nombre Definido" y su uso en: Rangos Dinámicos, Gráficos Dinámicos y Reportes Dinámicos.


En la siguiente entrada de este blog explicaremos de manera detallada, mediante la utilización de vídeos e imágenes, la forma de utilizar la función "Nombre Definido" en Excel, la cual, pese a ser una función bastante poco usada, entrega gran utilidad al momento de querer hacer más eficiente el manejo de grandes volúmenes de datos, ya sea para la creación de rangos y gráficos dinámicos, como para simplemente la utilización de una función que haga referencia a un rango definido previamente.

Esperamos que la información entregada aquí sea de gran utilidad, y de fácil entendimiento, el cual fue nuestro principal objetivo durante el desarrollo del blog.




Marco Apablaza
Carolina Garcia
Benjamín León
Bastián Valenzuela
Grupo 3

Computación para los negocios
Facultad de Economía y Negocios
Universidad de Chile




Cómo crear un Rango Dinámico utilizando la función "Nombre Definido”

Un rango dinámico corresponde a un rango de numérico o de texto que se ajusta automáticamente a la cantidad de elementos presentes en él. Visto desde otra perspectiva, cuando uno simplemente define un nombre para un rango, éste es estático, es decir, si se agregan nuevos elementos justo debajo de dicho rango, estos no pasan a estar dentro del rango que definimos previamente, para este problema es que existe la opción de crear rangos dinámicos, en esta ocasión, utilizando la función "Nombre definido".




En el vídeo se muestra la forma de construir rangos dinámicos, y a continuación mostraremos una secuencia de pasos a través de imágenes que busca explicar de manera detallada lo hecho en el vídeo.

Partiremos teniendo en una hoja de Excel una serie de datos, los cuales en este caso corresponde a una lista de nombres con sus respectivos promedios de notas de la Universidad.

El primer paso consta de definir un nombre para dicho rango que contiene los nombres de los alumnos, para esto nos dirigiremos al menú "Fórmulas", Sección "Nombres Definidos", y pulsaremos en "Administrador de Nombres", una vez que se haya desplegado el cuadro del administrador de nombres, debemos hacer click en la opción "Nuevo...", y debemos completar dichos campos de la siguiente forma:


En el campo "Nombre:" definimos cómo queremos llamar a dicho rango, es irrelevante el nombre que se le dé, sin embargo es recomendable escoger uno que ayude a recordar qué información estaremos almacenando en dicho rango, en este caso, utilizaremos "Nombres".

Ahora, en el campo "Hace referencia a:" es donde se encuentra la parte más compleja de la construcción, dado que es, básicamente, lo que hará que el rango sea dinámico.

Para el ejemplo llenaremos este cuadro con la siguiente fórmula:

=DESREF(Hoja1!$B$2;1;0;CONTARA(Hoja1!$B:$B)-1;1)

La cual, mediante la fórmula CONTARA, tal como su nombre lo indica, cuenta los elementos presentes en la columba B, el "-1" que se encuentra justo después de la cuenta corresponde a la sustracción del encabezado al total de la cuenta de elementos.

La fórmula DESREF devuelve una referencia de un rango, dado una cantidad de filas y columnas específico, según la estructura de dicha fórmula, es que se encuentra primero la celda a la que se hace referencia (Hoja!$B$2), luego la fila número 1, la columna 0, el alto correspondiente a la cuenta, y finalmente el ancho de 1. Personalmente esta fórmula consideramos que es poco intuitiva, sin embargo, emulando la estructura que le dimos en esta explicación y en el vídeo del inicio, no debiesen existir problemas para la construcción.

Para el siguiente rango, correspondiente a los promedios, hemos seguido prácticamente los mismos pasos, con la única diferente que al momento de hacer la cuenta, hemos utilizado la función CONTAR, dado que de esa forma sólo se incluirán los elementos numéricos, excluyendo automáticamente el encabezado. Tal como se muestra en la siguiente imagen:



Una vez hecho esto, y tal como mostramos en el vídeo, al agregar un nombre nuevo, o una nota nueva, en las columnas B o C, respectivamente, veremos cómo los rangos se actualizan automáticamente.


Como podemos ver en el vídeo, a manera de probar la efectividad de nuestra construcción de rangos dinámicos, hemos hecho 2 fórmulas que cuenten los elementos de los rangos "Nombres" y "Promedios", (de la forma =CONTARA(Nombres) y =CONTARA(Promedios)), las cuales, al agregar nuevos elementos, dichas cuentas cambian automáticamente, lo que corrobora la creación exitosa de nuestros rangos dinámicos.


Ejemplo aplicación: Creación de Gráfico Dinámico utilizando Rangos Dinámicos

http://www.youtube.com/watch?v=JQyo5alWNUk



Una vez que hemos creado nuestros rangos dinámicos, es posible crear gráficos que se actualicen automáticamente según la cantidad de elementos presentes en las columnas.

Para esto, tal como se puede ver en el vídeo, al momento de crear el gráfico, y seleccionar los datos, haremos lo siguiente: En los valores de la serie, escribimos "=Libro1!Promedios", para hacer referencia al rango que contiene los promedios. Mientras que en los rótulos de nombres, escribiremos "=Libro1!Nombres".

De esta forma tendremos un gráfico que cambiará automáticamente según la cantidad de elementos presentes en dichas columnas.

En el siguiente link se encuentra el archivo sobre el cual se desarrollaron los rangos dinámicos y el gráfico:

______________________________________


Cómo crear un Reporte/Gráfico Dinámico utilizando la función "Nombre Definido”

En este vídeo se muestra el resultado esperado al seguir los pasos del siguiente tutorial:



Para desarrollar el ejemplo que exponemos en el video, utilizaremos una tabla que contiene una lista de nombres y sus respectivas notas en cada año de universidad –creadas aleatoriamente para la ocasión- desde la cual obtendremos los datos con que crearemos el gráfico.

En primer lugar, definiremos un nombre que se refiera al rango que contiene los nombres de los alumnos. Para esto, vamos al menú “Fórmulas”, y en la sección “Nombres Definidos” pulsamos en “Crear desde la selección”, cabe destacar que es necesario haber seleccionado las celdas indicadas, en este caso, la columna correspondiente a los nombres, incluyendo el encabezado (celda con el texto “Nombre”). Luego de haber pulsado “Crear desde la selección”, aparecerá un cuadro en que se consulta a partir de qué se desea crear el nombre, normalmente Excel detectará qué es lo que se quiere hacer y dará como predeterminada dicha opción, la cual en este caso corresponde a “Fila Superior”.



De la misma forma en que creamos este nombre, ahora utilizaremos esta función para definir un nombre para cada uno de los rangos que contienen las notas.



Una vez creados los nombres, crearemos una lista desplegable dentro de una celda, con el fin de escoger en dicha lista el nombre sobre el cual uno quiere consultar a través del gráfico dinámico.


En primer lugar seleccionamos la celda (N#1) , luego en el menú Datos, sección Herramientas de datos pulsamos sobre “Validación de datos”  y escogemos la primera opción de las que se despliegan (N#2). Nos aparecerá el cuadro que se ve en la imagen, acá escogeremos la opción Lista (N#3) y finalmente en la sección “Origen”, seleccionaremos la lista de nombre, esta vez sin incluir el encabezado “Nombres” (N#4) y le damos a Aceptar, cabe destacar que al seleccionar la columnas de nombres, en el cuadro origen aparecerá “=nombres”, dado que fue el nombre que definimos en el primer paso para dicho rango. Con esto tendremos creada una celda que contiene una lista desplegable con los nombres presentes en la tabla de datos.

Una vez creada la lista desplegable en la celda, debemos definir un nombre para ésta. Para esto, existen dos opciones, siendo la mostrada en la imagen la más simple: Seleccionamos la celda, y en el cuadro superior izquierdo presente en Excel definimos un nombre para dicha celda, en este caso usaremos “TituloGrafico”, dado que luego asociaremos esta celda al título del gráfico para que se actualice automáticamente a los diferentes nombres de cada alumno, cabe destacar que el nombre que uno defina es irrelevante en sí, sin embargo es conveniente escoger nombres que ayuden a recordar fácilmente para qué fueron definidos, y así hacer menos dificultoso el trabajo.


Ahora nos enfrentamos a una de las partes menos intuitivas del proceso, correspondiente a definir un nombre el cual se asocie a los datos de cada uno de los alumnos, el cual será utilizado al momento de escoger los valores de la serie en el gráfico.


Para esto, nos dirigiremos al menú “Formulas” y en la sección “Nombres definidos” pulsamos sobre “Administrador de nombres”, una vez que se muestre el cuadro que contiene todos los nombres que hemos definido en el libro de Excel actual, pulsamos en “Nuevo…” y se nos mostrará el siguiente cuadro:





Nuevamente el nombre es irrelevante, pero es necesario recordarlo fácilmente para los siguientes pasos, en este caso usamos “SerieGrafico”. 

En la sección “Hace referencia a”, debemos utilizar la siguiente fórmula: 

=INDIRECTO(SUSTITUIR(Hoja1!$A$15;" ";"_")) 

La celda a la que se hace referencia en este caso (A15) corresponde a la cual contiene la lista desplegable. La función INDIRECTO se utiliza para interpretar el texto almacenado en dicha celda y convertirlo en el rango que definimos anteriormente. 

Dado que en este caso los nombres de nuestra lista contienen espacios, es necesario utilizar la función SUSTITUIR, la cual se encargará de convertir los espacios contenidos en la celda, en guiones bajos, para que el formato sea compatible con el de la herramienta “Nombres Definidos”.

Posteriormente, debemos crear un gráfico -en este caso de líneas-. Para crearlo fácilmente seleccionamos las dos primeras filas de la tabla de datos, es decir, la fila que contiene los encabezados (Nombre, 1er Año, 2do Año, etc) y la fila correspondiente a “Marco Apablaza” con sus respectivas notas, nos vamos al menú “Insertar” y seleccionamos Gráfico de Lineas, el gráfico se construirá automáticamente de la forma que vemos en la imagen. 






Luego, para que el gráfico sea dinámico, hacemos click derecho sobre la línea y pulsamos sobre la opción “Seleccionar datos…” y luego, en el siguiente cuadro que aparecerá, pulsamos en “Editar”, con lo cual nos encontraremos con el siguiente cuadro:


En la sección “Nombre de la serie” y “Valores de la serie”, estarán la celda pertenecientes a la tabla de datos originales de la cual se creó el gráfico, debemos modificar esto utilizando los nombres definidos en los pasos anteriores. De esta forma, en “Nombre de la serie” escribiremos =Libro4!TituloGrafico y en Valores de la serie =Libro4!SerieGrafico.


Cabe destacar que es necesario mantener la referencia a la hoja en la que se está trabajando, es decir en este caso, “Libro4!”, incluyendo el signo de exclamación.



Luego de esto, tendremos un gráfico dinámico tal como vimos al principio, al cual sólo le faltará pulir detalles tales como fijar los valores mínimo y máximo de los ejes, con el fin de hacer más comparables los resultados entre cada uno de los alumnos.



Hacemos click derecho sobre el eje de las ordenadas, y pulsamos sobre la opción "Dar formato a eje...". En el cuadro que aparecerá debemos fijar los valores máximo y mínimo como se ve en la siguiente imagen.


La construcción del gráfico dinámico detallada anteriormente se encuentra en el siguiente video:



En el siguiente link se encuentra el archivo Excel en el cual se desarrolló el gráfico dinámico:



Leer más...

martes, 26 de junio de 2012

Aplicación de dashboard en indicadores de gestión


A continuación se muestra la utilización de un dashboard para medir el desempeño de la empresa XXX encargada de la elaboración de jugos. Esto es muy útil para algunos que queramos seguir el área de control de gestión, en lo que será necesario la realización de un dashboard para poder analizar los distintos datos de una empresa y poder tomar decisiones acertadas.

El dashboard se divide en tres niveles: Táctico, operativo y Estratégico.
Para crear el dashboard se necesitan datos relacionados al desempeño de la empresa, los cuales son los indicadores de gestión que se muestran en las tablas dentro del archivo, y con eso ya podemos seleccionar datos y crear los gráficos. Para ello se realizó una lista desplegable con los años, para poder ver el avance. Esta lista está asociada a una tabla en donde a partir de los distintos años con la función BUSCARV busca los datos dependiendo del año indicado y se actualiza esta tabla ligada al gráfico, como se muestra en la imagen a continuación.



Las distintas tablas para todos los gráficos en el dashboard deben estar ligadas a la misma lista desplegable, para que al seleccionar el año se cambien los datos para todos los  gráficos existentes en la hoja. 
El procedimiento anterior debe ser repetido para todos los niveles existentes.

Ahora ya es posible tener el dashboard!

Pero aún no está terminado, ya que para no tener que estar cambiando de hoja en hoja para analizar los distintos niveles es posible crear un botón asociado a una macro para poder ir al dashboard siguiente.
La macro utilizada para esto es la siguiente:



Ahora que ya está creada la macro es posible asociarla a un dibujo:


Una vez que tenemos todo listo se puede agregar dibujos de fondo para que sea más personalizado dependiendo de la empresa.

Finalmente, para que al abrir el archivo se abra directamente en pantalla completa, lo que permite una mejor visualización, se grabó una macro realizando esta operación, también la eliminación de la barra de fórmulas y las líneas de cuadrícula. Luego este texto se pego en un Workbook y se seleccionó la opción Open (como se muestra en la imagen) para que así se realicen todas las acciones al momento de abrir el archivo.


Una vista final del dashboard sería asi:







Leer más...

domingo, 17 de junio de 2012

Macros recursivas con uso de Solver

Macros recursivas con uso de Solver

Solver es parte de una serie de comandos a veces denominados herramientas de análisis. Con Solver, podemos buscar el valor óptimo para una fórmula determinada, la cual puede ser secuencia de valores, referencias de celda,  funciones u operadores de una celda que producen juntos un valor nuevo.
Una formula comienza siempre con el signo igual (=), denominada celda objetivo, en una hoja de cálculo. Solver funciona en un grupo de celdas que estén relacionadas, directa o indirectamente, con la fórmula de la celda objetivo.
Solver ajusta los valores en las celdas cambiantes que se especifiquen, denominadas celdas ajustables, para generar el resultado especificado en la fórmula de la celda objetivo. También pueden aplicarse restricciones, o sea,  limitaciones al problema, se puede aplicar restricciones a celdas ajustables, la celda de destino u otras celdas que estén directa o indirectamente relacionadas con la celda de destino.
Con Solver, podemos  dar solución a  variados problemas de optimización, entre ellos por ejemplo la  maximización de la utilidad.

Ahora un ejemplo para utilizar Solver y encontrar el Optimo de Pareto

¿Qué es un Óptimo de Pareto? Profundizando los análisis de las Curvas de Indiferencia y de la Caja de Edgeworth, el economista, político y sociólogo italianoVilfredo Pareto (1848-1923) desarrolló el concepto de Óptimo para aquella situación en la cual se cumple que no es posible beneficiar a una persona sin perjudicar a otra. En la búsqueda de un equilibrio con mejor bienestar, ambos agentes aceptan el intercambio hasta el punto en que este deja de generar beneficios.

Una forma de encontrar el óptimo de Pareto, es utilizando Microsoft Excel, utilizando la herramienta SOLVER con la ayuda del VBA, específicamente con el uso de Macros Recursivas.

Macros Recursivas
Recursividad, es un concepto fundamental en computación, es una alternativa diferente para implementar estructuras de repetición (ciclos). La recursividad se puede utilizar en toda situación en la cual la solución puede ser expresada como una secuencia de movimientos o pasos con reglas no ambiguas.
Se dice que una función (Function) es recursiva o que un procedimiento Sub es recursivo si se llama a sí mismos. Un ejemplo sencillo de cómo calcular el factorial de un número es el siguiente:

Function Factorial (N As Integer) As Long
                If N = 0 Then
                               Factorial = 1  ‘esto debido  a que 0!=1
                Else
                               Factorial = N * Factorial(N-1) ‘se llama así misma, pero en un número menor
                End if
End Function

Encontrando el optimo de Pareto:
Caso: Tenemos dos agentes en la economía, ambos tienen la misma función de utilidad que depende de solo dos bienes U(x1,x2) = x1*x2.  Inicialmente los consumos corresponden
Agente A (X1,X2)=(1,2) y el Agente B (X1,X2)=(2,1). Se sabe además que los precios relativos son igual a 1.

Utilizando Solver podemos encontrar el óptimo de consumo de estos agentes, o sea, el óptimo de Pareto. Para encontrar el óptimo se debe cumplir la siguiente condición, que es parte de la celda objetivo de Solver.


La macro utilizada para calcular lo anterior es la siguiente:
Sub MacroSolverr()

    SolverAceptar definirCelda:="$B$12", valorMáxMín:=3, valorDe:="0", _
        celdasCambiantes:="$B$4,$B$5,$B$8,$B$9"
    SolverAgregar referenciaCelda:="$F$5", relación:=2, Formula:="3"
    SolverAgregar referenciaCelda:="$F$6", relación:=2, Formula:="3"
    SolverAgregar referenciaCelda:="$E$9", relación:=2, Formula:="$E$8"
    SolverAgregar referenciaCelda:="$E$10", relación:=2, Formula:="$E$8"
    SolverAceptar definirCelda:="$B$12", valorMáxMín:=3, valorDe:="0", _
        celdasCambiantes:="$B$4,$B$5,$B$8,$B$9"
    SolverResolver
End Sub

Para utilizar esta macro, y otras macros que utilizan la herramienta Solver es necesario tener activado las funciones de Solver, para ello deben ir al Visual Basic en parte superior donde dice Herramientas->Referencias y activar la casilla SOLVER.


 Para graficar el óptimo de Pareto, y muchos otros tipos de gráficos, existe el complemento QIMacros para Excel, donde fácilmente puedes obtener el grafico que necesitas. Este complemento también debe ser activado para que pueda ser utilizado una vez se ha descargado. Para activar sus funciones se realiza el mismo procedimiento que para Solver:
 Esta herramienta utilizando macros permite graficar con solo seleccionar los datos correspondientes.
 Volviendo al ejemplo, si seleccionamos los datos estimados y utilizamos QImacros, específicamente, donde dice “Pareto” obtenemos el grafico siguiente, que muestra el optimo de nuestra función optimizada con Solver.
Al utilizar las Macros en Excel podemos apreciar muchas de sus ventajas, algunas de ellas son:
Realizar programas a medida
Rápido y fácil manejo 
Realización de tareas y cálculos complejos,
Aumento de eficacia y eficiencia 


Leer más...

Cómo realizar una simulación de Monte Carlo con Macros



La simulación de Monte Carlo buscar determinar el comportamiento futuro de una variable aleatoria. A continuación se mostrará un ejemplo en donde se quiere calcular el beneficio total (Precio de venta – costo de venta) para distintos escenarios. Para poder desarrollar el modelo se deben definir las siguientes fases:
1 Definir las variables no controlables (por ejemplo unidades vendidas)
2 Definir variables no controladas deterministas (por ejemplo precio combustible)
3 Definir variables controladas (por ejemplo cantidad a comprar)
4 Cálculo de la función de distribución de probabilidad de la variable en cuestión. Por ejemplo aquí tenemos la demanda por un producto, su precio de venta y el precio de compra:


5 Realizar distribución. Para esto se crea una tabla como la que se muestra más abajo. En ella es necesario indicar una cantidad de sucesos que se quieren analizar, la cantidad demandada, el precio de venta y precio de compra. Estas últimas tres columnas deben ser números aleatorios buscados en la tabla anterior (Del punto 4) y sus resultados van asociados a ciertos niveles de beneficios.
Luego se selecciona grabar macro y se comienza a hacer la fórmula BUSCARV de números aleatorios buscados en las tablas de demanda, precio de venta y de compra. Se arrastra la fórmula para todos los sucesos y calcula el beneficio para cada nivel de compra (como se muestra en la imagen de abajo).


A continuación, se calcula el beneficio esperado para distintas cantidades a comprar. Con una fórmula simple de beneficio, en donde si la cantidad comprada es mayor a la demandada se calcule la cantidad vendida por su precio de venta menos la cantidad comprada por su precio de compra. Luego esta fórmula se arrastra hacia abajo para todos los sucesos y hacia el lado para todas las cantidades de a comprar.


Ahora podremos detener la macro y asignarla al dibujo azul que dice “simulación”, para que cada vez que apretemos el botón se cree una nueva simulación.
La macro quedó así:




Y ahora hacemos click derecho en el botón “simulación”, y seleccionamos asignar macro, buscamos el nombre que le pusimos a la macro que grabamos y LISTO!




Leer más...

miércoles, 13 de junio de 2012

Generación masiva de muestras estadísticas con macros

Ya vimos como podíamos generar muestras estadísticas para distribuciones (Ver Generación de muestras estadísticas para distribuciones) de forma rápida y simple, pero este método tiene una limitación. Si necesitamos crear una serie de números, pero sin repetición, vamos a tener que utilizar la función aleatorio como se describió en Generación de muestras estadísticas para distribuciones y luego quitar los valores repetidos (con "Quitar Duplicados" por ej.) e ir agregando nuevos números aleatorios, volver a chequear que no hayan repetidos hasta obtener el tamaño de la muestra deseada. Este procedimiento puede no ser muy relevante si no estamos preocupados por el numero de la muestra, pero si lo estamos, esto puede ser muy complicado. Para esto mostraremos una herramienta muy similar a la función aleatorio() o aleatorio.entre(), pero que se hace con macros.

Primero debemos posicionarnos en la viñeta Programador y luego hacemos click en Visual Basic.



Luego seleccionamos Insertar y Modulo


En la pantalla blanca que se abre, colocamos el código que nos interesa:


Sub Aleatoriosunicos()
Dim i As Integer, j As Integer
Dim A() As Long
Dim esta As Boolean
Dim x As Long, y As Long, z As Long, num As Long
x = Application.InputBox(prompt:="Introduzca el rango mínimo al cual quiere que pertenezcan los números aleatorios" _
        , Title:="Generador de Números Aleatorios", Default:=1, Type:=1)
y = Application.InputBox(prompt:="Introduzca el rango máximo" _
        , Title:="Generador de Números Aleatorios", Default:=1000, Type:=1)
z = Application.InputBox(prompt:="Introduzca la cantidad de números aleatorios que desea generar?" _
        & " (<15000)?" _
        , Title:="Generador de Números Aleatorios", Default:=100, Type:=1)
If z = 0 Then Exit Sub
If z > 15000 Then z = 15000
If z > y - x + 1 Then
    MsgBox "!Ha especificado más números " _
    & "de los que son posibles en el rango!"
    Exit Sub
End If
ReDim A(z)
Randomize
A(1) = Int((y - x + 1) * Rnd + x)
For i = 2 To z
    Do
        num = Int((y - x + 1) * Rnd + x)
        esta = False
        For j = 1 To i - 1
           If num = A(j) Then esta = True: Exit For
        Next j
    Loop While esta
    A(i) = num
Next i
For i = 1 To z
    Cells(i, 2) = A(i)
Next i
End Sub

Nos quedará algo así:






Para entender que hace el código, iremos analizando paso por paso, para poder ir cambiando las propiedades más interesantes. Si nos fijamos la macro comienza con Sub Aleatoriosunicos() , si queremos cambiar el nombre de la Macro en vez de Aleatoriosunicos escribiremos el nombre que deseamos.
Luego en esta parte del código


estamos creando InputBox que nos permiten introducir el numero mínimo y máximo que queremos que aparezca en nuestra muestra y el tamaño de ella. Podemos cambiar el dialogo que aparece en los cuadros reemplazando el texto que esta entre comillas después de prompt:=. Además podemos cambiar los números minimos, máximos y tamaño de la muestra que salgan por defecto, esto lo hacemos reemplazando los números después de Default:

Por otro lado podemos ver que 


si el numero que se coloca en el InputBox que corresponde al tamaño de la muestra (z) es igual a 0 la macro deja de correr, si es mayor a 15000, se reemplazará el número introducido por 15000, generando una muestra de este tamaño. Si el tamaño de la muestra introducido es mayor que el rango de los números especificados la macro devuelve un MsgBox que indica el error. Si queremos podemos cambiar este texto reeplazandolo después de MsgBox.

Finalmente el resto del código crea los valores aleatorios comprobando que no estén repetidos una y otra vez.


De esta forma cada vez que queramos crear una muestra, solo debemos hacer correr la macro. Esto lo hacemos en la viñeta Programador, Macros, seleccionando la macro y haciendo click en Ejecutar.


La macro hará que aparezcan los Input Box mencionados, 





al colocar la información que nos piden nos quedará algo así. Podemos observar que la muestra se creará a partir de la celda B1.


Luego estos valores, serán los llamados x en las funciones de distribución. Por ej. podemos calcularlo para la normal, Chi cuadrado y Poisson. Para más detalle ver (Generacion de muestras estadisticas para distribuciones y Generación de distribuciones estadísticas).







Fuentes 

http://excelavanzado.com/macros.htm
http://www.excelavanzado.es/2008/11/generacin-de-nmeros-aleatorios-nicos.html
http://www.computacionynegocios.info/2012/06/generacion-de-muestras-estadisticas.html
http://www.computacionynegocios.info/2012/06/generacion-de-distribuciones.html



Leer más...