Ejemplos de la Función ALEATORIO.ENTRE en Excel, VBA y Google Sheets
Download the example workbook
Este tutorial muestra cómo utilizar la Función ALEATORIO.ENTRE en Excel y Google Sheets para calcular un número aleatorio entre dos números.
Cómo Utilizar la Función ALEATORIO.ENTRE en Excel:
La función ALEATORIO.ENTRE genera un número aleatorio (sólo números enteros) entre dos números. Esta fórmula generará un número aleatorio entre 1 y 100.
=ALEATORIO.ENTRE(B3;C3)
Nota: MATRIZALEAT es una nueva función en Excel 2019 en adelante que sustituye a la función ALEATORIO.ENTRE. Pero si no tiene la última versión o necesita enviar el archivo para personas que aún no lo tienen, todavía puede utilizar la función ALEATORIO.ENTRE para la compatibilidad con versiones anteriores.
Además de generar los números aleatorios que usted especifique, MATRIZALEAT le permite elegir cuántas filas y columnas colocar los números aleatorios, e incluso puede elegir si quiere números enteros o decimales.
Si su versión de Excel es Excel 2003 o anterior, tendrá que utilizar ALEATORIO en su lugar.
=ALEATORIO()
Generar Decimales Dentro de un Rango
Como se mencionó, MATRIZALEAT y ALEATORIO hacen esto fácilmente. Con ALEATORIO.ENTRE, tiene que hacerlo así:
=ALEATORIO.ENTRE($B$3*10;$B$6*10)/10
Primero tienes que decidir cuántos decimales quieres. En el ejemplo anterior, es un decimal. Y hay que dividir un número entero entre 10 para obtener un decimal. Por lo tanto, la fórmula es básicamente
=ALEATORIO.ENTRE(Número mínimo x 10; Número máximo x 10) / 10
Generar Fechas y/o Horas al Azar
Si sabes cómo se almacenan las fechas y la hora en Excel, la lógica va a ser similar a la anterior porque se almacenan como números. Simplemente:
=ALEATORIO.ENTRE($B$3;$B$6)
La hora es similar, excepto que es decimal en lugar de un número entero o un número de la serie. Hay 24 horas al día, así que multiplica los números mínimos y máximos por 24 y divide ese número aleatorio entre 24 para obtener una hora aleatoria.
=ALEATORIO.ENTRE($B$3*24;$B$6*24)/24
Si también quieres minutos aleatorios, utiliza 1440 (24 horas x 60 minutos) en lugar de 24.
=ALEATORIO.ENTRE($B$3*1440;$B$6*1440)/1440
Para tener los dos juntos, simplemente súmalos:
=ALEATORIO.ENTRE($B$3;$B$6)+ALEATORIO.ENTRE($C$3*1440;$C$6*1440)/1440
Recuperar un Campo Aleatorio
Si simplemente necesita aleatorizar números enteros, ALEATORIO.ENTRE es perfecto por sí mismo. Sin embargo, la mayoría de las veces queremos recuperar un campo aleatorio. Para obtener un empleado aleatorio en B3:B7, por ejemplo, puede utilizar la función ALEATORIO.ENTRE para obtener un número de fila, y INDICE para obtener el valor particular de la fila:
=INDICE(B3:B7;ALEATORIO.ENTRE(1;5))
Recuperar un Campo Aleatorio Sin Duplicados
Para asegurarse de que no hay duplicados, puede utilizar esta fórmula de matriz.
{=INDICE($B$3:$B$7;K.ESIMO.MAYOR(SI(ESNOD(COINCIDIR($B$3:$B$7;D$2:D2;0));FILA($B$3:$B$7);0);
ALEATORIO.ENTRE(1;5-FILAS(D$3:D3)+1))-FILA($B$3)+1)}
Nota: No escribas los corchetes ({). Pulsa CTRL + SHIFT + ENTER para introducir la fórmula.
En el ejemplo anterior, ALEATORIO.ENTRE primero aleatoriza entre 1 y (5 – FILA(D$3:D3) + 1). Al copiar esta fórmula hacia abajo, el rango de aleatorización se reduce de (1 a 5) a (1 a 1). Al hacer esto, evitamos los duplicados.
El SI + ESNOD + COINCIDIR + FILA se utiliza para devolver sólo un número de fila que no esté ya en uso.
Función ALEATORIO.ENTRE en Google Sheets
La función ALEATORIO.ENTRE funciona igual en Google Sheets.
Ejemplos de RANDBETWEEN (ALEATORIO.ENTRE) en VBA
También puede utilizar la función ALEATORIO.ENTRE en VBA. Escriba:
Application.WorksheetFunction.Randbetween(bottom,top)
Para los argumentos de la función (bottom, etc.), puedes introducirlos directamente en la función, o definir variables para utilizarlos en su lugar. Ejecución de las siguientes sentencias VBA:
Range("C2") = Application.WorksheetFunction.RandBetween(Range("A2"), Range("B2"))
Range("C3") = Application.WorksheetFunction.RandBetween(Range("A3"), Range("B3"))
Range("C4") = Application.WorksheetFunction.RandBetween(Range("A4"), Range("B4"))
producirá los siguientes resultados
La tercera sentencia dará un error, ya que RANDBETWEEN no acepta números negativos como parámetros: