COMBINA?ÕES EM FORMUL?RIO-VBA_EXCEL
Boa Noite a Todos
Gostaria da ajuda de Vc's neste arquivo, pequei um formulário na net que faz combinações de números, mas eu gostaria que estas combinações fosse através dos números discriminados na TextBox4, segue figuras e código e arquivo.
Grato a Todos
Mauro
Gostaria da ajuda de Vc's neste arquivo, pequei um formulário na net que faz combinações de números, mas eu gostaria que estas combinações fosse através dos números discriminados na TextBox4, segue figuras e código e arquivo.
Grato a Todos
Mauro
Public Function Combinacoes(Grupo As Integer, Elementos As Integer) As Long
If Elementos < 1 Or Grupo < 1 Or Elementos > Grupo Then Exit Function
[ô] M!/(M-N)!/N! convertida
[ô]Combinações = Factorial(Grupo) / Factorial(Grupo - Elementos) / Factorial(Elementos)
Dim T As Double, a As Integer
T = 1
For a = 1 To Grupo - Elementos
T = T * (a + Elementos) / a
Next a
Combinacoes = T
End Function
Public Function GetSeqCombinacoes(Grupo As Integer, Elementos As Integer, NrComb As Long) As Integer()
Dim a As Integer, b As Integer, c As Integer
Dim N As Double, m As Double, SS() As Integer
If NrComb < 1 Then NrComb = 1
If NrComb > Combinacoes(Grupo, Elementos) Then Exit Function
N = NrComb - 1: c = Grupo
ReDim Preserve SS(Elementos)
For a = Elementos To 1 Step -1
For b = c To a Step -1
m = Combinacoes(b - 1, a)
If N >= m Then
N = N - m
SS(a) = b
c = b - 1
Exit For
End If
Next b
Next a
GetSeqCombinacoes = SS
End Function
Public Function NumsSeqCombinacoes(Grupo As Integer, Elementos As Integer, NrComb As Long, Optional Separador As String = [Ô] [Ô]) As String
Dim I As Integer, S As String
Dim NRS() As Integer
NRS = GetSeqCombinacoes(Grupo, Elementos, NrComb)
If UBound(NRS) <> Elementos Then Exit Function
If Elementos > 0 Then S = NRS(1)
For I = 2 To Elementos
S = S & Separador & NRS(I)
Next I
NumsSeqCombinacoes = S
End Function
[ô]Formulário
Private Sub CommandButton1_Click()
ListBox1.Clear
Dim I As Long, T As Double
Dim N As Integer, E As Integer
N = Val(TextBox1.Text)
E = Val(TextBox2.Text)
T = Combinacoes(N, E)
Label6.Caption = T
If T > 1000 Then T = 1000 [ô]Limite optional para não sobrecarregar a listbox
For I = 1 To T
ListBox1.AddItem NumsSeqCombinacoes(N, E, I)
Next I
End Sub
O que você quer se chama permutações e não combinações. Você precisa usar os números fornecidos como elementos. Nos métodos que você mostrou, os elementos são sempre sequenciais o que não é o que você quer, então seus métodos vão mudar bastante. E sua próxima pergunta vai ser [Ô]Pode me dar um exemplo?[Ô]
Citação::
O que você quer se chama permutações e não combinações. Você precisa usar os números fornecidos como elementos. Nos métodos que você mostrou, os elementos são sempre sequenciais o que não é o que você quer, então seus métodos vão mudar bastante. E sua próxima pergunta vai ser [Ô]Pode me dar um exemplo?[Ô]
Pode me dar um exemplo?, Por favor.
Bem, você quer aprender a fazer, entender o que está acontecendo, ou quer só o resultado?
Bom, vamos por partes, este arquivo anexo são formulas para combinação, combinações dos valores 9 e 6 = 84 e permutas com estes valores, será de 60480, corrige se eu estiver errado, eu gostaria da ajuda para em vez dos sistema mostrar de 1 Ã ......, mostrasse os valores escritos na TextBox4, gostaria muito de aprender a fazer e entender.
Obrigado pela ajuda.
Obrigado pela ajuda.
Ok, para fazer o que você quer, você precisa entender como é feito no papel. Você tem os números:
1 - 3 - 6 -7 - 9 -14
Então você quer todas as permutações possÃveis de 3 dÃgitos. Teria algo como:
1-3-6
1-3-7
1-3-9
1-3-14
3-6-7
3-6-9
E assim por diante, certo? é isso que você quer fazer?
1 - 3 - 6 -7 - 9 -14
Então você quer todas as permutações possÃveis de 3 dÃgitos. Teria algo como:
1-3-6
1-3-7
1-3-9
1-3-14
3-6-7
3-6-9
E assim por diante, certo? é isso que você quer fazer?
Bom Dia Kerplunk
Sim, Isso o arquivo já faz, agora o que eu quero é um complemento [Ô]macro[Ô] que lê estes números pelo TextBox4 e apresente na ListBox como proposto.
Grato
Mauro
Sim, Isso o arquivo já faz, agora o que eu quero é um complemento [Ô]macro[Ô] que lê estes números pelo TextBox4 e apresente na ListBox como proposto.
Grato
Mauro
Faça seu login para responder