Excel Avanzado

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

Excel Avanzado

Función RandomNumber en VBA

| 1 comentario

Esta es una de las funciones creadas en VBA por Martín Green como ejemplo de una variedad más amplia de funciones llamadas funciones personalizadas que podrían crearse en este formato de acuerdo a la necesidad del usuario.

La función RandomNumber genera un número aleatorio dentro de un rango pre-especificado en una hoja de Excel.

Los parámetros principales de esta función son:

RandomNumbers(Lowest As Long, Highest As Long, Optional Decimals As Integer)

  • El parámetro Lowest As Long es el límite inferior del rango en el que estará el número aleatorio.
  • El parámetro Highest As Long es el límite superior del rango en el que estará el número aleatorio que queremos obtener.
  • El parámetro Optional Decimals As Integer da la posibilidad de elegir el número de decimales que tendrá el número aleatorio.

A continuación presentamos el código en VBA con las características usuales para la creación de un objeto función.

Public Function RandomNumbers(Lowest As Long, Highest As Long, _

Optional Decimals As Integer)

Application.Volatile  'Remove this line to "freeze" the numbers

If IsMissing(Decimals) Or Decimals = 0 Then
Randomize
RandomNumbers = Int((Highest + 1 - Lowest) * Rnd + Lowest)
Else
Randomize
RandomNumbers = Round((Highest - Lowest) * Rnd + Lowest, Decimals)
End If

End Function

En código Application.Volatile  hace que nuestra función sea “ volátil” esto es que la hoja de Excel recalculará los números aleatorios cada tiempo.

EJEMPLO:

Para crear números aleatorios entre 20 y 150 sin decimales, se selecciona un rango en Excel y se ingresa la función =RandomNumber(20;150).

Si queremos que los números aleatorios sean calculados con 2 decimales solo se debe escribir así: =RandomNumber(20;150;2).

Para números aleatorios entre 0 y 1 con 5 decimales se procede a ingresar los datos a la función seleccionando un rango de Excel: =RandomNumber(0;1;5).

Un comentario

  1. Mi pregunta es: La funcion random, soporta números negativos?.. y bueno, desearía saber también si hay un tope máximo para el límiete superior de números aleatorios. ( Por ejemplo: Limite maximo de 999 999 999).

Deja una respuesta

Los campos requeridos estan marcados con *.