🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel MATRIZALEAT — una fórmula para toda una cuadrícula de números aleatorios

|

Excel MATRIZALEAT — una fórmula para toda una cuadrícula de números aleatorios

En resumenMATRIZALEAT([filas]; [columnas]; [mín]; [máx]; [número_entero]) es el generador aleatorio todoterreno de Excel 365: una fórmula derrama todo un bloque de números aleatorios en vez de que arrastres ALEATORIO mil filas hacia abajo. Los cinco argumentos son opcionales. =MATRIZALEAT() a secas se comporta como ALEATORIO(). El interruptor que decide decimales o enteros es el último argumento, número_entero, y vale FALSO por defecto — así que obtienes decimales como 3,71 salvo que pases VERDADERO explícitamente. Sigue siendo volátil (se resortea en cada edición) y derrama, así que un rango bloqueado da #¡DESBORDAMIENTO!.

=MATRIZALEAT()                          ' -> 0,6218...   un decimal en [0,1), como ALEATORIO()
=MATRIZALEAT(5)                         ' -> derrama 5 decimales aleatorios en una columna
=MATRIZALEAT(5; 3)                      ' -> derrama una cuadrícula 5×3 de decimales
=MATRIZALEAT(5; 3; 1; 100; VERDADERO)   ' -> una cuadrícula 5×3 de enteros aleatorios 1–100
=SORTBY(A2:A20; MATRIZALEAT(FILAS(A2:A20)))   ' -> baraja una lista en una fórmula

Si ya conoces ALEATORIO y ALEATORIO.ENTRE, MATRIZALEAT es el paso natural siguiente: hace lo que hacen las dos, para toda una región a la vez, y se redimensiona sola. Las pegas son el orden de los argumentos, un valor por defecto traicionero y el hecho de que —al ser una matriz dinámica— puede chocar con lo que tenga debajo.

Lo que vas a aprender

  • El modelo mental: MATRIZALEAT es ALEATORIO + ALEATORIO.ENTRE, derramado
  • Por qué el argumento número_entero vale FALSO por defecto — el «¿por qué me salen decimales?» n.º 1
  • El orden completo de los argumentos, y cómo se comportan mín/máx para decimales frente a enteros
  • Por qué sigue siendo volátil, y cuándo lanza #¡DESBORDAMIENTO!
  • La combinación estrella: SORTBY(lista; MATRIZALEAT(...)) para barajar
  • Cuándo MATRIZALEAT no está disponible (y qué usar en su lugar)

El modelo mental: ALEATORIO y ALEATORIO.ENTRE, derramados

ALEATORIO da un decimal. ALEATORIO.ENTRE da un entero. Para llenar una tabla con cualquiera de los dos, la vieja forma era escribir la fórmula una vez y arrastrarla por cientos de celdas. MATRIZALEAT concentra todo eso en una sola fórmula que derrama — le dices la forma (filas, columnas) y el sabor (rango, entero o no) y pinta el bloque entero de una vez.

Esa es toda la idea: una función que es a la vez los dos dados clásicos y el arrastre, fundidos en uno. Lee =MATRIZALEAT(5; 3; 1; 100; VERDADERO) como «dame una cuadrícula de 5 por 3 de ALEATORIO.ENTRE(1;100)», y =MATRIZALEAT(5; 3) como «dame una cuadrícula de 5 por 3 de ALEATORIO()». En cuanto lo ves como «ALEATORIO derramado / ALEATORIO.ENTRE derramado», los argumentos dejan de parecer arbitrarios.

Los argumentos — y el FALSO por defecto que pilla a todos

Los cinco argumentos son opcionales, pero su orden importa y un valor por defecto sorprende a casi todo el mundo:

=MATRIZALEAT([filas]; [columnas]; [mín]; [máx]; [número_entero])
  • filas, columnas — la forma del bloque derramado (por defecto 1 × 1).
  • mín, máx — el rango (por defecto de 0 a 1). Ambos extremos son inclusivos cuando generas enteros.
  • número_enteroVERDADERO para enteros, FALSO para decimales. Por defecto: FALSO.

Ese último valor por defecto es la pregunta número uno sobre MATRIZALEAT: «pedí números entre 1 y 100 y me salió 47,83, ¿por qué?». Porque te paraste en máx y nunca pasaste número_entero:

=MATRIZALEAT(5; 1; 1; 100)             ' -> decimales como 47,83  (número_entero omitido = FALSO)
=MATRIZALEAT(5; 1; 1; 100; VERDADERO)  ' -> enteros como 47       (número_entero = VERDADERO)

Regla: si quieres enteros, tienes que terminar la fórmula con VERDADERO. Dar mín y máx no basta — devuelve decimales dentro de ese rango tan tranquilo. Esto es lo contrario de ALEATORIO.ENTRE, que es solo de enteros, así que quien migra desde ALEATORIO.ENTRE cae cada vez. (Un detalle más sobre enteros que vale un vistazo: con número_entero en VERDADERO, mín y máx deben ser a su vez números enteros, o Excel devuelve #¡VALOR! — y si mín es mayor que máx, otra vez #¡VALOR!.)

Sigue siendo volátil, y sigue derramando

MATRIZALEAT hereda los dos comportamientos que definen la aleatoriedad con matrices dinámicas:

  • Volátil — como ALEATORIO y ALEATORIO.ENTRE, se resortea en cada recálculo: cualquier edición, F9, ordenación o apertura del archivo. Si necesitas conservar un resultado, congélalo igual: selecciona el derrame, Copia, Pegado especial → Valores. (Congela el rango derramado entero de una vez, no solo la celda superior izquierda.)
  • Derrame — escribe en las celdas de debajo y a la derecha de donde la tecleaste. Si ya hay algo en ese bloque, obtienes un error #¡DESBORDAMIENTO! en vez de números. Quita el estorbo y la matriz aparece.
=MATRIZALEAT(1000; 1; 1; 100; VERDADERO)   ' llena 1000 celdas desde UNA fórmula...
                                            ' ...pero resortea las 1000 en cada recálculo

Esa volatilidad merece respeto a gran escala: un MATRIZALEAT de mil celdas recalcula cada una de sus celdas en cada pulsación en otro punto del libro. Para un modelo de hipótesis en vivo, perfecto; para un conjunto de datos que ya diste por bueno, congélalo para que paren los recálculos.

La combinación estrella: barajar una lista con SORTBY + MATRIZALEAT

Lo más útil que hace MATRIZALEAT no es generar números que conservas — es generar números por los que ordenas y luego tiras. Combínalo con SORTBY y barajas una lista en una sola fórmula, sin columna auxiliar:

=SORTBY(A2:A20; MATRIZALEAT(FILAS(A2:A20)))          ' -> la lista en orden aleatorio
=TAKE(SORTBY(A2:A20; MATRIZALEAT(FILAS(A2:A20))); 5)  ' -> una muestra aleatoria de 5, sin repetir

MATRIZALEAT(FILAS(...)) fabrica una clave aleatoria por fila; SORTBY ordena las filas por esas claves; la aleatoriedad desaparece en cuanto ha hecho su trabajo. Como cada fila recibe una clave distinta y simplemente se reordena, nada se repite — que es exactamente el comportamiento sin reemplazo que ALEATORIO.ENTRE no puede darte. Este patrón es la columna vertebral de la selección y el muestreo aleatorios, y MATRIZALEAT es lo que lo convierte en una sola línea en 365.

El criterio

En Excel 365, MATRIZALEAT deja obsoleto lo de «arrastrar ALEATORIO 1000 filas» — una fórmula, sin arrastrar, y se redimensiona sola cuando crecen tus datos. Échale mano siempre que necesites un bloque de aleatoriedad o una clave de orden aleatoria. Las dos cosas que hay que tener en la cabeza son el valor por defecto número_entero = FALSO (termina con VERDADERO cuando quieras enteros) y la volatilidad (congela a valores en cuanto un resultado sea definitivo). La única vez que no conviene usarla es por compatibilidad: MATRIZALEAT es una función de matriz dinámica, así que solo existe en Excel 365 y Excel 2021 — si tu libro tiene que funcionar en Excel 2019 o anterior, recurre a ALEATORIO y ALEATORIO.ENTRE arrastradas a la vieja usanza.

Cómo te ayuda ExcelMaster

El valor por defecto FALSO y la mecánica del derrame son fáciles de olvidar, así que deja que los cargue un asistente de fórmulas. Pídele a ExcelMaster «una cuadrícula 10×5 de enteros aleatorios del 1 al 100» y escribe =MATRIZALEAT(10; 5; 1; 100; VERDADERO) — con el VERDADERO que se te habría escapado — y apunta el derrame a un rango vacío para que nunca veas #¡DESBORDAMIENTO!. Pídele «baraja esta lista» o «saca una muestra aleatoria de 25 filas» y construye la combinación SORTBY(...; MATRIZALEAT(...)), y luego se ofrece a congelar la salida a valores para que tu muestra deje de moverse. Y si detecta que tu archivo apunta a un Excel más antiguo, recurre en silencio a un enfoque basado en ALEATORIO que sí funcionará allí.

Preguntas frecuentes

¿Qué hace la función MATRIZALEAT en Excel?

=MATRIZALEAT([filas]; [columnas]; [mín]; [máx]; [número_entero]) devuelve una matriz derramada de números aleatorios. Sin argumentos devuelve un solo decimal en [0, 1) como ALEATORIO(); con filas y columnas llena todo un bloque; con mín, máx y número_entero en VERDADERO llena ese bloque con enteros aleatorios en tu rango. Es el generador aleatorio todo en uno de Excel 365.

¿Por qué MATRIZALEAT me da decimales en lugar de números enteros?

Porque el argumento número_entero vale FALSO por defecto. Pasar mín y máx solo fija el rango — no fuerza enteros. Para obtener números enteros tienes que añadir VERDADERO como quinto argumento: =MATRIZALEAT(5; 1; 1; 100; VERDADERO). Sin él, MATRIZALEAT devuelve decimales dentro de [mín, máx].

¿MATRIZALEAT es volátil? ¿Cómo evito que se recalcule?

Sí — igual que ALEATORIO y ALEATORIO.ENTRE, se resortea en cada recálculo. Para conservar un resultado, selecciona todo el rango derramado, Copia y luego Pegado especial → Valores. Eso convierte la matriz entera en números estáticos que ya no cambian.

¿Por qué MATRIZALEAT muestra un error #¡DESBORDAMIENTO!?

MATRIZALEAT es una matriz dinámica que derrama en las celdas de debajo y a la derecha de la fórmula. Si alguna de esas celdas ya contiene datos, Excel no puede derramar y muestra #¡DESBORDAMIENTO!. Borra o mueve lo que bloquee el rango de derrame y la matriz aparecerá.

¿Cómo barajo una lista o saco una muestra aleatoria con MATRIZALEAT?

Ordena por una clave aleatoria: =SORTBY(rango; MATRIZALEAT(FILAS(rango))) devuelve la lista en orden aleatorio, y =TAKE(SORTBY(rango; MATRIZALEAT(FILAS(rango))); n) saca una muestra aleatoria de n sin repeticiones. Mira Cómo seleccionar, muestrear y barajar al azar en Excel.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación el 11/07/2026.

Guías relacionadas: Excel ALEATORIO y ALEATORIO.ENTRE · Selección y muestreo aleatorios · Excel SORT y SORTBY · Excel TAKE y DROP