Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

DO LOOP en VBA para generar datos aleatorios

| 1 comentario

Generar datos aleatorios en celdas especificas

La estructura Do loop permite hacer bucles que se ejecuten mientras se cumple cierta condición. El programa se resuelve de arriba hacia abajo, se analiza la condición y de ser verdadero se realizan las líneas establecidas dentro. Al llegar a la linea superior del bucle se analiza la condición y si es verdadera se ejecutan las líneas interiores del bucle. Al llegar al Loop se devuelve el flujo del programa al inicio, y se vuelve a analizar la condición. En el momento en el que la condición es falsa el bucle ya no se ejecuta.

A continuación se muestra un ejemplo donde generamos números aleatorios entre 1 y 10, y se los asignamos a la variable i.

i = Int(Rnd * 10) + 1

Ahora, la variable a vamos a sumar los valores que va tomando i, y va añadiendo valores a la variable a.

a = a + i

Se toma el antiguo valor de la variable a y le sumamos lo que vale i, y esa suma se asigna al nuevo valor que ahora toma la variable a.

Los valores que van tomando las variables i y a se escriben en las columnas 3 y 4, que son las columnas C y D.

Para que la fila vaya cambiando en el instrucción Cells(fila, columna) hemos creado una variable fila que incrementa uno.

fila=fila+1

La condición que hace que se repita el bucle es a<100, lo que provoca que el bucle se ejecute mientras se cumpla que a, que es el acumulado de la variable i, sea inferior a 100.

Este programa ayuda para generar data que puede ser luego empleada para pronósticos, planeamiento, estudios de ecuaciones, mínimos cuadrados, etc.

Si se desea cambiar la fila a partir de la cual aparecen los datos, solo modificamos donde inicia la variable fila, y variando las columnas aparecerán los datos donde lo designemos.

ima4

El resultado es que disponemos de dos columnas con números aleatorios. En la columna C los números aleatorios son enteros entre 1 y 100, y en la columna D se encuentran sus acumulados.

Necesitamos borrar el rango que hemos escrito en las columnas B y C, para que al generar una nueva serie ve valores se haga sobre una zona limpia. Esto se hace con la macro Borrar.

m2

Para hacer mas interactivo el programa, creamos un formulario con dos botones de comando para ejecutar y borrar la data del programa.

m3

Cuando estemos en la hoja activa, al ejecutar el programa hacemos clic en el botón empezar se generará entonces la data aleatoria en las celdas correspondientes.

ima5

Al presionar el botón borrar, se eliminara la data generada.

do-loop

 

Elaborado por: Melissa Marca

 

Un comentario

  1. Hola
    Sabe porque me manda error esta rutina?

    empfila = 2

    Private Sub CommandButton2_Click()
    Do While Nueva.Cells(empfila, 2).Value ""

    If Len((Nueva.Cells(empfila, 2).Value)) 7 Then
    Nueva.Rows(empfila).Delete
    empfila = empfila - 1
    End If

    empfila = empfila + 1

    Loop
    End Sub

Deja una respuesta

Los campos requeridos estan marcados con *.