Gerar Combinações - VBA - Ambiente Office

1
Home Principal Assinar Dicas Excel Word Outlook Office/VBA Suplementos Vídeos Outros Busque neste site: Pesquisar Gerar Combinações Última atualização: 10/04/2012 Introdução Referências Introdução Esta página mostra um exemplo de como se gera uma lista da combinação de todos elementos de acordo com a equação: O exemplo abaixo imprimirá os resultados no Excel. No entanto, é possível visualizá-los também na janela de verificação imediata. Crie um módulo e insira o código abaixo: Option Explicit 'C(n, p) = n! / ((n-p)! * p!) 'lPermutações a ser definido, seria o 'p' da fórmula acima Const lPermutações As Long = 3 Dim r As Long Dim v(1 To 5) Sub Teste() Dim lElementos As Long 'Popula vetor de elementos v(1) = "a" v(2) = "b" v(3) = "c" v(4) = "d" v(5) = "e" 'C(n, p) = n! / ((n-p)! * p!) 'lElementos seria o 'n' da fórmula acima lElementos = UBound(v) - LBound(v) + 1 'Contador de linhas para uso no Excel: r = 0 'Limpa Planilha ativa Cells.Delete 'Inicia recursão: Combinação lElementos, lPermutações, 1 End Sub Sub Combinação(n As Long, p As Long, k As Long, Optional s As String) If p > n - k + 1 Then Exit Sub If p = 0 Then 'Para visualizar o resultado de uma combinação no Excel: r = r + 1 Cells(r, "A").Resize(1, lPermutações) = Split(s, "|") 'Se quiser visualizar o resultado na Janela de Verificação imediata, use: Debug.Print s Exit Sub End If 'Recorre novamente: Combinação n, p - 1, k + 1, s & v(k) & "|" 'Recorre novamente a partir do elemento anterior: Combinação n, p, k + 1, s End Sub Esse código, na verdade, é adaptado de Tom Ogilvy. Você pode alterar à vontade os valores do elemento v, assim como sua dimensão e o valor de p na fórmula para obter resultados diferentes. Esse código usa o algoritmo de recursão para exibir todas as combinações (clique aqui para saber mais sobre recursão). No exemplo acima, a saída no Excel será: Referências Para baixar um arquivo de exemplo pronto, clique aqui. --- Site de Felipe Costa Gualberto. Belo Horizonte, Brasil, 2009-2013. [email protected] Gerar Combinações - VBA - Ambiente Office http://www.ambienteoffice.com.br/officevba/gerar_combinacoes/ 1 de 1 20-abr-2013 23:25

Transcript of Gerar Combinações - VBA - Ambiente Office

Page 1: Gerar Combinações - VBA - Ambiente Office

Home

Principal

Assinar

Dicas

Excel

Word

Outlook

Office/VBA

Suplementos

Vídeos

Outros

Busque neste site:

Pesquisar

Gerar Combinações

Última atualização: 10/04/2012

Introdução

Referências

Introdução

Esta página mostra um exemplo de como se gera uma lista da combinação de todos elementos de acordo com a equação:

O exemplo abaixo imprimirá os resultados no Excel. No entanto, é possível visualizá-los também na janela de verificação imediata.

Crie um módulo e insira o código abaixo:

Option Explicit

'C(n, p) = n! / ((n-p)! * p!)'lPermutações a ser definido, seria o 'p' da fórmula acimaConst lPermutações As Long = 3

Dim r As Long

Dim v(1 To 5)

Sub Teste() Dim lElementos As Long 'Popula vetor de elementos v(1) = "a" v(2) = "b" v(3) = "c" v(4) = "d" v(5) = "e" 'C(n, p) = n! / ((n-p)! * p!) 'lElementos seria o 'n' da fórmula acima lElementos = UBound(v) - LBound(v) + 1 'Contador de linhas para uso no Excel: r = 0 'Limpa Planilha ativa Cells.Delete 'Inicia recursão: Combinação lElementos, lPermutações, 1End Sub

Sub Combinação(n As Long, p As Long, k As Long, Optional s As String) If p > n - k + 1 Then Exit Sub If p = 0 Then 'Para visualizar o resultado de uma combinação no Excel: r = r + 1 Cells(r, "A").Resize(1, lPermutações) = Split(s, "|") 'Se quiser visualizar o resultado na Janela de Verificação imediata, use: Debug.Print s Exit Sub End If 'Recorre novamente: Combinação n, p - 1, k + 1, s & v(k) & "|" 'Recorre novamente a partir do elemento anterior: Combinação n, p, k + 1, sEnd Sub

Esse código, na verdade, é adaptado de Tom Ogilvy.

Você pode alterar à vontade os valores do elemento v, assim como sua dimensão e o valor de p na fórmula para obter resultados diferentes.

Esse código usa o algoritmo de recursão para exibir todas as combinações (clique aqui para saber mais sobre recursão).

No exemplo acima, a saída no Excel será:

Referências

Para baixar um arquivo de exemplo pronto, clique aqui.

---

Site de Felipe Costa Gualberto.

Belo Horizonte, Brasil, 2009-2013.

[email protected]

Gerar Combinações - VBA - Ambiente Office http://www.ambienteoffice.com.br/officevba/gerar_combinacoes/

1 de 1 20-abr-2013 23:25