¿Cómo generar un valor aleatorio en Excel basado en una probabilidad asignada?
Al trabajar con Excel, es posible que en ocasiones necesite generar valores aleatorios que reflejen probabilidades subyacentes específicas. Por ejemplo, imagine que tiene una tabla con varios resultados posibles y sus probabilidades asociadas, como se muestra en la siguiente captura de pantalla.
Este escenario es habitual en simulaciones empresariales, modelado de proyectos y entornos educativos cuando se desea que la selección aleatoria refleje con precisión la probabilidad o frecuencia establecida por sus datos.
Las necesidades y casos de uso habituales incluyen:
- Simule respuestas de encuestas o elecciones de clientes, en las que algunas opciones tienen mayor probabilidad de ser seleccionadas.
- Genera conjuntos de datos de prueba o extracciones aleatorias para enseñar conceptos de probabilidad.
- Automatiza procesos de selección en los que cada opción tiene una probabilidad conocida.
- Diseño de juegos y análisis de riesgos que requieren resultados basados en distribuciones de probabilidad específicas.
A continuación, descubra varios métodos para generar valores aleatorios según probabilidades asignadas en Excel: técnicas estándar basadas en fórmulas, una automatización avanzada mediante VBA y el uso del complemento integrado Análisis de datos.
➤ VBA: Generar valores aleatorios con probabilidades asignadas
Generar un valor aleatorio con probabilidad
Excel ofrece una solución accesible basada en fórmulas para generar valores aleatorios según probabilidades definidas. Este método es ideal para tareas rápidas, funciona íntegramente dentro de las hojas de cálculo y no requiere configuración adicional.
Antes de comenzar, asegúrese de que sus valores estén organizados en una columna (A2:A8) y que sus probabilidades correspondientes —expresadas como decimales entre 0 y 1— figuren en la columna adyacente (B2:B8). Las probabilidades deben sumar exactamente 1 para garantizar precisión. Esta solución es ideal para tablas con un número manejable de valores.
1.En una columna adyacente (comenzando en C2), introduzca la siguiente fórmula para calcular las probabilidades acumuladas:
=SUM($B$2:B2) Luego, arrastre esta fórmula hacia abajo para cubrir todos sus valores. Así se generan intervalos acumulados para cada valor, lo que facilita asignar un número aleatorio a un resultado específico.
2.En cualquier celda vacía (por ejemplo, D2), introduzca la siguiente fórmula para obtener un valor aleatorio basado en su distribución de probabilidad:
=INDEX(A$2:A$8,COUNTIF(C$2:C$8,"<="&RAND())+1) Pulse Intro para mostrar un valor aleatorio. Cada vez que pulse F9 (para recalcular) o cuando cambien los datos de la hoja, aparecerá un nuevo resultado.
Consejos y precauciones:
- Las probabilidades en la columna B deben sumar exactamente 1 (o el 100 % si se expresan en porcentajes; en ese caso, conviértalos a decimales para usarlos en las fórmulas) y así garantizar una distribución justa.
- Esta técnica es ideal para listas cortas. Si tiene decenas o cientos de valores, el rendimiento puede ralentizarse y el mantenimiento se vuelve complicado.
- Si necesita repetir la selección aleatoria para varias extracciones (por ejemplo, generar un lote de resultados simulados), basta con copiar la fórmula final en un rango situado debajo o al lado.
- Tenga cuidado con las filas en blanco y los rangos no coincidentes, ya que pueden causar errores o resultados inesperados.
Recordatorio de errores: Si obtiene un error #¡REF! o #¡VALOR!, asegúrese de que su columna de probabilidades acumuladas tenga la misma longitud que sus valores y de que todas las probabilidades sean números válidos.

Descubra la magia de Excel con KUTOOLS AI
- Ejecución inteligente: Realice operaciones en celdas, analice datos y cree gráficos con comandos sencillos.
- fórmulas personalizadas: Cree fórmulas a medida para optimizar sus flujos de trabajo.
- Programación en VBA: Escriba e implemente código VBA con facilidad.
- Interpretación de fórmulas: Entienda las fórmulas complejas con facilidad.
- Traducción de texto: Rompa las barreras del idioma directamente en sus hojas de cálculo.
VBA: Generar valores aleatorios con probabilidades asignadas
Para usuarios que requieran mayor automatización o deseen generar un volumen mayor de valores aleatorios (como miles de muestras), Excel VBA ofrece una solución práctica que funciona de forma más rápida y flexible que las fórmulas de hoja de cálculo. Este método resulta especialmente eficaz al trabajar con grandes conjuntos de datos o al producir resultados aleatorios masivos para simulaciones.
1.Vaya a Herramientas para desarrolladores>Visual Basic, luego en la ventana de VBA, haga clic en Insertar>Móduloy pegue el siguiente código en el módulo:
Sub GenerateRandomWithProbability()
Dim rngValues As Range
Dim rngProbs As Range
Dim n As Long
Dim i As Long
Dim cumProbs() As Double
Dim valList() As Variant
Dim randNum As Double
Dim resultRange As Range
Dim idx As Long
' On Error, ignore
On Error Resume Next
xTitleId = "KutoolsforExcel"
' Select values
Set rngValues = Application.InputBox("Select values range", xTitleId, Type:=8)
' Select probabilities
Set rngProbs = Application.InputBox("Select probabilities range", xTitleId, Type:=8)
' Number of random values to generate
n = Application.InputBox("Number of random values to generate", xTitleId, "10", Type:=1)
' Where to output
Set resultRange = Application.InputBox("Select output start cell", xTitleId, Type:=8)
If rngValues.Rows.Count <> rngProbs.Rows.Count Then
MsgBox "Values and probabilities range must be the same size.", vbExclamation
Exit Sub
End If
ReDim cumProbs(1 To rngValues.Count)
ReDim valList(1 To rngValues.Count)
' Calculate cumulative probabilities
cumProbs(1) = rngProbs.Cells(1, 1).Value
valList(1) = rngValues.Cells(1, 1).Value
For i = 2 To rngValues.Count
cumProbs(i) = cumProbs(i - 1) + rngProbs.Cells(i, 1).Value
valList(i) = rngValues.Cells(i, 1).Value
Next i
' Generate random results
For i = 1 To n
randNum = Rnd
For idx = 1 To UBound(cumProbs)
If randNum <= cumProbs(idx) Then
resultRange.Cells(i, 1).Value = valList(idx)
Exit For
End If
Next idx
Next i
End Sub 2. En la ventana de VBA, haga clic en el
botón de ejecución para ejecutar el código. A continuación, se le pedirá sucesivamente que seleccione el rango de sus valores, el rango de probabilidades, el número de valores aleatorios que desea generar y la celda inicial de salida. La macro rellenará rápidamente las celdas de destino con valores aleatorios basados en las probabilidades asignadas.
- Puede repetir este proceso con conjuntos de datos más grandes, y la columna de resultados se puede personalizar en cualquier hoja.
- Si el rango de probabilidades no suma un valor muy cercano a 1, el código podría distorsionar la distribución; asegúrese siempre de validar sus supuestos.
- Esta solución es ideal para muestreos automatizados, simulaciones y la generación reproducible de lotes.
Consejos: Mantenga sus valores y probabilidades contiguos y perfectamente alineados. Guarde su trabajo antes de ejecutar macros, ya que las acciones de VBA no se pueden deshacer con «Deshacer».
Artículos relacionados:
- ¿Cómo generar números aleatorios sin repetir en Excel?
- ¿Cómo mantener o evitar que los números aleatorios cambien en Excel?
- ¿Cómo generar aleatoriamente «Sí» o «No» en Excel?
Las mejores herramientas de productividad para Office
Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...
Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
- ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!
Todos los complementos de Kutools en un solo instalador.
Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.
- Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
- Un instalador, una licencia— configuración en minutos (compatible con MSI)
- Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
- Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
- La mejor relación calidad-precio— ahorre frente a la compra individual de complementos