Como gerar um valor aleatório com base numa probabilidade atribuída no Excel?
Ao trabalhar com o Excel, poderá ocasionalmente precisar de gerar valores aleatórios que reflitam probabilidades específicas. Por exemplo, imagine que tem uma tabela com vários resultados possíveis e as respetivas probabilidades, tal como na imagem seguinte.
Este cenário é comum em simulações empresariais, modelação de projetos e contextos educacionais, sempre que pretender que a seleção aleatória reflita com precisão a probabilidade ou frequência indicada pelos seus dados.
Necessidades e casos de utilização típicos incluem:
- Simular respostas a inquéritos ou escolhas de clientes, em que determinadas opções têm maior probabilidade de serem selecionadas.
- Gere conjuntos de dados de teste ou extrações aleatórias para ensinar conceitos de probabilidade.
- Automatize processos de seleção em que cada opção tem uma probabilidade conhecida.
- Conceção de jogos e análise de risco, em que os resultados exigem distribuições de probabilidade específicas.
Abaixo encontrará diversos métodos para gerar valores aleatórios com base em probabilidades atribuídas no Excel, incluindo técnicas padrão com fórmulas, uma solução avançada em VBA e a utilização do suplemento Análise de Dados integrado no Excel.
➤ VBA: Gerar valores aleatórios com probabilidades atribuídas
Gerar valor aleatório com probabilidade
O Excel oferece uma solução acessível, baseada em fórmulas, para gerar valores aleatórios de acordo com probabilidades definidas. Este método é ideal para tarefas rápidas, funciona totalmente dentro das folhas de cálculo e não exige qualquer configuração especial.
Antes de começar, certifique-se de que os seus valores estão listados numa coluna (A2:A8) e as respetivas probabilidades — expressas em decimais entre 0 e 1 — na coluna imediatamente seguinte (B2:B8). As probabilidades devem somar exatamente 1 para garantir precisão. Esta solução é ideal para tabelas com um número facilmente gerível de valores.
1.Numa coluna adjacente (a partir de C2), introduza a seguinte fórmula para calcular as probabilidades cumulativas:
=SUM($B$2:B2) Depois, arraste esta fórmula para baixo de modo a abranger todos os seus valores. Isso cria intervalos cumulativos para cada valor, facilitando a associação de um número aleatório a um resultado específico.
2.Numa célula vazia qualquer (por exemplo, D2), introduza a fórmula seguinte para obter um valor aleatório com base na sua distribuição de probabilidades:
=INDEX(A$2:A$8,COUNTIF(C$2:C$8,"<="&RAND())+1) Prima Enter para obter um valor aleatório. Sempre que premir F9 (para recalcular) ou sempre que os dados da folha forem alterados, surge um novo resultado.
Dicas e precauções:
- As probabilidades na coluna B devem somar exatamente 1 (ou 100 %, caso utilize percentagens — mas converta-as em decimais nas fórmulas) para garantir uma distribuição justa.
- Esta técnica é ideal para listas curtas. Se tiver dezenas ou centenas de valores, o desempenho poderá diminuir e a manutenção tornar-se mais difícil.
- Se precisar de repetir a seleção aleatória para várias extrações (por exemplo, gerar um lote de resultados simulados), basta copiar a fórmula final para um intervalo abaixo ou ao lado.
- Tenha cuidado com linhas em branco e intervalos não coincidentes, pois podem provocar erros ou resultados inesperados.
Lembrete de erro: Se obtiver um erro #REF! ou #VALUE!, verifique se a coluna de probabilidades cumulativas tem o mesmo comprimento que os seus valores e se todas as probabilidades são números válidos.

Desbloqueie a Magia do Excel com KUTOOLS AI
- Execução Inteligente: Realize operações em células, analise dados e crie gráficos — tudo impulsionado por comandos simples.
- fórmulas personalizadas: Crie fórmulas personalizadas para simplificar os seus fluxos de trabalho.
- Programação VBA: Escreva e implemente código VBA com facilidade.
- Interpretação de Fórmulas: Compreenda facilmente fórmulas complexas.
- Tradução de Texto: Elimine barreiras linguísticas nas suas folhas de cálculo.
VBA: Gerar valores aleatórios com probabilidades atribuídas
Para utilizadores que precisam de maior automatização ou pretendem gerar um volume elevado de valores aleatórios (por exemplo, milhares de amostras), o VBA do Excel oferece uma solução prática, mais rápida e flexível do que as fórmulas de folha de cálculo. Este método revela-se particularmente eficaz ao trabalhar com grandes conjuntos de dados ou ao produzir resultados aleatórios em massa para simulações.
1.Aceda a Ferramentas de Programador>Visual Basic, depois, na janela do VBA, clique em Inserir>Móduloe cole o código seguinte no 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. Na janela do VBA, clique no
botão de execução para executar o código. Ser-lhe-ão solicitados, sequencialmente, o intervalo dos seus valores, o intervalo das probabilidades, o número de valores aleatórios que pretende gerar e a célula inicial de saída. A macro preencherá rapidamente as células-alvo com valores aleatórios com base nas probabilidades atribuídas.
- Pode repetir este processo para conjuntos de dados maiores, e a coluna de resultados pode ser personalizada em qualquer folha.
- Se o seu intervalo de probabilidades não somar um valor muito próximo de 1, o código poderá distorcer a distribuição; certifique-se sempre de validar as suas premissas.
- Esta solução é a preferida para amostragem automatizada, simulação e geração reprodutível de lotes.
Dicas: Mantenha os seus valores e probabilidades contíguos e claramente alinhados. Guarde o seu trabalho antes de executar macros, pois as ações do VBA não podem ser anuladas com o comando Desfazer.
Artigos relacionados:
- Como gerar números aleatórios sem repetições no Excel?
- Como impedir que os números aleatórios sejam atualizados no Excel?
- Como gerar aleatoriamente «Sim» ou «Não» no Excel?
As Melhores Ferramentas de Produtividade para o Office
Potencie as suas competências no Excel com Kutools para Excel e experimente uma eficiência como nunca antes.Kutools para Excel Oferece mais de 300 funcionalidades avançadas para impulsionar a produtividade e Economizar Tempo.Clique aqui para obter a funcionalidade de que mais precisa...
Office Tab Traz uma interface com separadores para o Office e torna o seu trabalho muito mais fácil
- Ative a edição e leitura com separadores no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Abra e crie vários documentos em novos separadores da mesma janela, em vez de em janelas separadas.
- Aumente a sua produtividade em 50 % e elimine centenas de cliques do rato todos os dias!
Todos os suplementos Kutools — num único instalador.
Kutools for Office reúne suplementos para Excel, Word, Outlook e PowerPoint, além do Office Tab Pro, sendo a solução ideal para equipas que trabalham em várias aplicações do Office.
- Pacote tudo-em-um— suplementos para Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Um instalador, uma licença— configuração em minutos (pronto para MSI)
- Funciona melhor em conjunto— produtividade simplificada em todas as aplicações do Office
- Teste gratuito de 30 dias com todas as funcionalidades— sem registo, sem cartão de crédito
- Melhor relação qualidade-preço— poupe face à compra individual dos suplementos