Ir ao conteúdo
  • Cadastre-se
Marcela da Silva de Souza

Excel Fórmulas diversas avançadas VBA e outros

Posts recomendados

Sub Main()
    Dim I, J, N, T, R, W    As Integer
    Dim iVetor()            As Integer
    Dim iColuna, iArq, x, y As Integer
    Dim iNumeros            As Integer
    Dim iConta              As Long
    Dim sTipo               As String
    
    iConta = 0
    iColuna = 3
    iArq = FreeFile
       
    Open ThisWorkbook.Path & "\COMBINACOES.TXT" For Output As iArq
    
    iNumeros = InputBox("Entre com a quantidade de números")
    
    ReDim iVetor(iNumeros)
    
    iNumeros = iNumeros - 1
        
    For J = 0 To iNumeros
        Do
            iVetor(J) = InputBox("Numero " & J + 1)
            N = 0
            
            If iVetor(J) < 1 Or iVetor(J) > 99 Then N = 1
        
            For R = 0 To iNumeros
                If iVetor(J) = iVetor(R) And J <> R Then N = 1
            Next R
        Loop While N
    Next J
    
    For J = 0 To iNumeros - 1
        For W = J + 1 To iNumeros
            If iVetor(J) > iVetor(W) Then
                T = iVetor(J)
                iVetor(J) = iVetor(W)
                iVetor(W) = T
            End If
        Next W
    Next J
    
    For J = 0 To iNumeros
        x = Int(iVetor(J) / 10)
        y = Int(iVetor(J) Mod 10)
        sTipo = IIf(x Mod 2 = 0, "P", "I")
        sTipo = sTipo & IIf(y Mod 2 = 0, "P", "I")
        
        If x = 0 Then x = 10
        If y = 0 Then y = 10
        
        R = Abs(y - x)
 R = Abs(y + x)
        
        Cells(1, iColuna) = sTipo
        Cells(2, iColuna) = iVetor(J)
        Cells(3, iColuna) = y & "-" & x & "=" & R
        
        iColuna = iColuna + 1
    Next J
    
    For I = 0 To 5
        For J = I + 1 To iNumeros
            For N = J + 1 To iNumeros
                For R = N + 1 To iNumeros
                    For T = R + 1 To iNumeros
                        For W = T + 1 To iNumeros
                            iConta = iConta + 1
                                Print #iArq, _
                                iConta & " -> " & iVetor(I) & " - " & _
                                iVetor(J) & " - " & iVetor(N) & " - " & _
                                iVetor(R) & " - " & iVetor(T) & " - " & iVetor(W)
                        Next W
                    Next T
                Next R
            Next N
        Next J
    Next I
    
    Close #iArq
   
    Cells(4, 3) = "comb. =>" & iConta
End Sub

Olá estou utilizando esse código no VBA porém eu gostaria de saber que formula posso utilizar para mostrar repetição em  um intervalo, onde o usuário possa escolher o grupo que quer ver onde se repetirá a posição do concurso.

Ex:

Concurso 100- |02|05|10|13|18|20|

Concurso  101-|06|08|15|19|20|21|

Concurso  103-|01|07|09|15|21|31|

Concurso  108-|02|05|10|13|18|20|

 

Repetição concurso 100 repetiu no Concurso:108

 

Encontrei essas fórmulas:

=CONT SES

e CONT com SE separado.

não sei qual seria mais adequada.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 11/10/2019 às 00:20, Marcela da Silva de Souza disse:

Sub Main()
    Dim I, J, N, T, R, W    As Integer
    Dim iVetor()            As Integer
    Dim iColuna, iArq, x, y As Integer
    Dim iNumeros            As Integer
    Dim iConta              As Long
    Dim sTipo               As String
    
    iConta = 0
    iColuna = 3
    iArq = FreeFile
       
    Open ThisWorkbook.Path & "\COMBINACOES.TXT" For Output As iArq
    
    iNumeros = InputBox("Entre com a quantidade de números")
    
    ReDim iVetor(iNumeros)
    
    iNumeros = iNumeros - 1
        
    For J = 0 To iNumeros
        Do
            iVetor(J) = InputBox("Numero " & J + 1)
            N = 0
            
            If iVetor(J) < 1 Or iVetor(J) > 99 Then N = 1
        
            For R = 0 To iNumeros
                If iVetor(J) = iVetor(R) And J <> R Then N = 1
            Next R
        Loop While N
    Next J
    
    For J = 0 To iNumeros - 1
        For W = J + 1 To iNumeros
            If iVetor(J) > iVetor(W) Then
                T = iVetor(J)
                iVetor(J) = iVetor(W)
                iVetor(W) = T
            End If
        Next W
    Next J
    
    For J = 0 To iNumeros
        x = Int(iVetor(J) / 10)
        y = Int(iVetor(J) Mod 10)
        sTipo = IIf(x Mod 2 = 0, "P", "I")
        sTipo = sTipo & IIf(y Mod 2 = 0, "P", "I")
        
        If x = 0 Then x = 10
        If y = 0 Then y = 10
        
        R = Abs(y - x)
 R = Abs(y + x)
        
        Cells(1, iColuna) = sTipo
        Cells(2, iColuna) = iVetor(J)
        Cells(3, iColuna) = y & "-" & x & "=" & R
        
        iColuna = iColuna + 1
    Next J
    
    For I = 0 To 5
        For J = I + 1 To iNumeros
            For N = J + 1 To iNumeros
                For R = N + 1 To iNumeros
                    For T = R + 1 To iNumeros
                        For W = T + 1 To iNumeros
                            iConta = iConta + 1
                                Print #iArq, _
                                iConta & " -> " & iVetor(I) & " - " & _
                                iVetor(J) & " - " & iVetor(N) & " - " & _
                                iVetor(R) & " - " & iVetor(T) & " - " & iVetor(W)
                        Next W
                    Next T
                Next R
            Next N
        Next J
    Next I
    
    Close #iArq
   
    Cells(4, 3) = "comb. =>" & iConta
End Sub

Olá estou utilizando esse código no VBA porém eu gostaria de saber que formula posso utilizar para mostrar repetição em  um intervalo, onde o usuário possa escolher o grupo que quer ver onde se repetirá a posição do concurso.

Ex:

Concurso 100- |02|05|10|13|18|20|

Concurso  101-|06|08|15|19|20|21|

Concurso  103-|01|07|09|15|21|31|

Concurso  108-|02|05|10|13|18|20|

 

Repetição concurso 100 repetiu no Concurso:108

 

Encontrei essas fórmulas:

=CONT SES

e CONT com SE separado.

não sei qual seria mais adequada.

Boa noite, será que alguém poderia ajudar a ver o que seria mais adequado nessa planilha por favor, já tentei vária fórmulas até =PREVISÃO fórmulas lineares e  linear sozonais.ALGUÉM AÍ PODE VIM COM UMA LÂMPADA E ACENDER UMA LUZ PODE SER DA CEBE rsrs.Brincadeira mas se puderem me auxiliar eu agradeceria muito abraços a todos(as).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para facilitar acho melhor tratar os dados como strings no vetor, assim fica mais fácil comparar

 

Segue um exemplo supondo que os dígitos já foram informados.

 

Reservei os primeiros três dígitos para o código do "concurso" e tratei os números no formato "00".

 

Sub Main()
    Dim I, N    As Integer
    Dim S       As String
    Dim StrV(3) As String
    
    StrV(0) = "100020510131820"
    StrV(1) = "101060815192021"
    StrV(2) = "103010709152131"
    StrV(3) = "108020510131820"

    For I = 0 To UBound(StrV) - 1
        For N = I + 1 To UBound(StrV)
            If Mid(StrV(I), 4, Len(StrV(I))) > Mid(StrV(N), 4, Len(StrV(N))) Then
                S = StrV(I)
                StrV(I) = StrV(N)
                StrV(N) = S
            End If
        Next N
    Next I
    
    For I = 1 To UBound(StrV)
        If Mid(StrV(I - 1), 4, Len(StrV(I - 1))) = Mid(StrV(I), 4, Len(StrV(I))) Then
           MsgBox "Repetição concurso " & Left(StrV(I - 1), 3) & " repetiu no Concurso " & Left(StrV(I), 3)
        End If
    Next I
End Sub

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...