Función ALEATORIO excluyendo rangos

La función que muestro a continuación da como resultado un número aleatorio entre dos números sin tener en cuenta un intervalo especificado. Como no sabía cómo llamarla, he optado por ALEATORIO2.
Imagina que necesitas un número aleatorio entre 1 y 100, que no debe mostrar como resultado, un valor comprendido entre 25 y 50.
La sintaxis es la siguiente:
=ALEATORIO2(inferior;superior;número inferior rango excluido;número superior rango excluido)
Atención! Todos los argumentos son obligatorios
En primer lugar la función valida los argumentos para comprobar que se han introducido en el orden correcto.
Luego, mediante un bucle, va creando números enteros aleatorios entre el valor inferior y el superior hasta que da con uno que no está comprendido en el rango de números excluidos.
Este es el código resultante:
Function ALEATORIO2(primer As Integer, ultimo As Integer, no1 As _
Integer, no2 As Integer)
'Valida los datos para que en el cálculo no aparezcan errores
If primer >= ultimo Or primer > no1 Or primer > no2 Or no1 > no2 _
Or no1 > ultimo Or no2 > ultimo Then
a = MsgBox("Por favor, revisa los argumentos de la función", , _
"Error en la función")
Exit Function
End If
' Calcula el entero aleatorio mientras no se encuentre entre no1 y no2
Do
res = Int((ultimo - primer + 1) * Rnd() + primer)
Loop While res >= no1 And res <= no2
ALEATORIO2 = res
End Function
¿Te ha sido útil esta función?
Escrito por
Sergio Propergol
Formador Excel y Power BI · Fundador de Ayuda Excel
Desde 2006 ayudo a profesionales y empresas a dominar Excel y Power BI de forma práctica, divertida y sin tecnicismos. Dejé el mundo corporativo en 2019 para dedicarme al 100% a la formación. Mi objetivo es siempre el mismo: que dejes de ver Excel como un problema y empieces a verlo como la solución que puede ser.
+25
años de experiencia
+4.200
alumnos formados
+500K
lectores al mes

