OTRO EJEMPLO USANDO WHILE ... END

En este ejemplo haremos uso de la sentencia While ... WEnd para codificar una macro que nos permita obtener los extremos de los intervalos correspondientes a la media más o menos uno, dos y tres veces la desviación estándar de un conjunto de datos.

En consecuencia, la presente macro va a realizar los siguientes cálculos:

Suma, Promedio, Varianza, Desviación estándar, Coeficiente de variación, el intervalo que cubre el 68%, el 96% y el 99%.

Vamos de inmediato a codificar la macro. En cada instrucción pondremos un comentario a la derecha y con un apóstrofe '

Ahora vamos a formalizar el uso del While con C. Como C contiene lo que se digita, podemos equivocarnos y editar espacio en blanco y luego el número, etc. Para eliminar los espacios en blanco, se usa la función TRIM(...).

Recuerde que, cuando digite los datos, al final, debe presionar o hacer clic en .

Abra el arcivo "MisMacros.xlsm" o haga clic aquí

Vaya al editor y, haciendo doble clic en el Módulo5, ingrese el siguiente prcedimiento al final de todos los que hubieran en este módulo.

Sub Calc2()
' Declaramos las variables. C recibirá el dato como cadena; n contará el número de datos
Dim Suma, Promedio, Varianza, DesEst, CoefVar, LimInf, LimSup As Double
Dim C As String
Dim n As Integer

Suma = 0 ' La suma que es el único que acumula, se pone en 0
n = 0
C = InputBox("Ingrese el dato: ") ' Leemos el primer número

While Trim(C) <> ""
Suma = Suma + Val(C)
Suma2 = Suma2 + Val(C) * Val(C)
n = n + 1
C = InputBox("Ingrese el dato: ") ' Volvemos a leer para repetir. Para terminar, [Intro]
Wend
' Ahora se realiza
Promedio = Suma / n ‘ Calcula el promedio
Varianza = (Suma2 - n * Promedio * Promedio) / (n - 1) ‘ Calcula la varianza
DesEst = Sqr(Varianza) ‘ Calcula la desviación estándar
CoefVar = DestEst / Promedio ‘ Calcula el coeficiente de variación
LimInf = Promedio – DesEst ‘ Calcula el límite inferior para el 68%
LimSup = Promedio + DesEst ‘ Calcula el límite superior para el 68%
MsgBox ("Suma total de los datos: " & Suma) ‘ Imprime texto y valor numérico usando &
MsgBox ("Promedio: " & Promedio & " " & "Varianza: " & Varianza & " " & "Desviación estandar: " & DesEst)
MsgBox ("Intervalo que cubre el 68% de los datos: " & LimInf & " , " & LimSup)

LimInf = Promedio - 2 * DesEst
LimSup = Promedio + 2 * DesEst
MsgBox ("Intervalo que cubre el 96% de los datos: " & LimInf & " , " & LimSup)

LimInf = Promedio - 3 * DesEst
LimSup = Promedio + 3 * DesEst
MsgBox ("Intervalo que cubre el 99% de los datos: " & LimInf & " , " & LimSup)

End Sub

La imagen siguiente contiene el procedimiento que lo hemos digitado dentro del mismo módulo4 que contiene a Calc1.

Guarde el archivo con el mismo nombre

En la siguiente sesión estudiaremos las funciones que nos permiten el manejo de cadenas, para ello haga clic aquí