Notifications
Clear all

Segunda moda?

12 Posts
2 Usuários
0 Reactions
2,661 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá,

Sei que encontrar o número que mais se repete consiste em "=modo" no Excel. Mas como encontrar o segundo número que mais se repete e assim por diante?

 
Postado : 17/01/2012 12:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde JJsales

Seja bem vindo ao fórum!

Envio uma planilha do colega Adilson Soledade com uma função em VBA (UDF) que faz o que vc deseja:

Não se esqueça de habilitar as Macros.

Dê retorno.

Abraço.

 
Postado : 17/01/2012 1:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado Patroppi, o Fórum é show!

A resposta é exatamente a que eu queria, mas só da pra fazer por VBA?

 
Postado : 17/01/2012 3:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Patroppi,

Por favor poderias me mostrar como faz isso? porque está realmente complicado pra mim, não entendo muito dos códigos VBA!

Obrigado!

 
Postado : 17/01/2012 7:23 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Segue algumas leituras...para te ajudar
http://technet.microsoft.com/pt-br/libr ... (office.12).aspx

http://support.microsoft.com/kb/151490/pt-br
Fonte: http://www.juliobattisti.com.br/excel120avancado/modulo5/licao6.htm

Criação de funções definidas pelo usuário: Este é um dos maiores benefícios do VBA. Podemos criar funções que executam cálculos repetitivos. Por exemplo, vários planilhas podem conter um campo CPF ou CNPJ. Poderíamos criar, em cada planilha, o código necessário para a validação do DV do CPF ou CNPJ. Porém este procedimento não é o mais indicado, pois além da duplicação do código necessário a validação, teríamos dificuldades para fazer atualizações neste código, pois cada alteração necessária terá que ser feita em vários locais. O ideal é criarmos uma função para validação do DV (uma função deve ser criada dentro de um módulo. Trataremos disso mais adiante.). Em cada planilha, onde for necessária, chamamos a função, passando o valor do CPF como parâmetro. A função calcula o DV e retorna o resultado para a planilha. Desta maneira precisamos criar uma única função. Quando forem necessárias alterações, basta alterar a função (em um único local, ou seja, no módulo onde a função foi criada) e todos os formulários passarão a utilizar a versão atualizada da função.

 
Postado : 18/01/2012 4:46 am
(@apple)
Posts: 12
Active Member
 

Bom dia, Sales !

Para copiar o código vba da planilha q/ o Amigo patropi te enviou e adapatar na sua faça o seguinte.

1- Na plan enviada, click nas teclas ( Alt+F11 ) copie o código q/ irá aparecer ao copiar feiche as janelas.
2- Na sua plan faça o mesmo procedimento com as teclas de atalho, ira paracer váras opçoes click em módulo q/ fica no lado esquerdo, cole o codigo q copiou. Pronto .

Resaltando, terá q/ adptar comforme sua necessidade e layout da plan.

Se tiver dúvida de como fazer isso, poste sua planilha de exemplo aqui no fórum q terá rapidinho uma resposta com os códigos adapitado.

Tomara que tenha entendido, cm/ estava muito atarefado não tive tempo de corrigir.

Abraços,

 
Postado : 18/01/2012 4:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia JJsales

Vou tentar te explicar como faz:

Na tua planilha clique em ALT+F11 para abrir o editor de VBA ---> Menu Inserir ---> Neste modulo em branco vc copia e cole esta código:

Option Base 1
'Adaptado a partir de exemplo disponível em:
' http://spreadsheetpage.com/index.php/tip/identifying_unique_values_in_an_array_or_range/

Function ItensÚnicos(ConjuntoValores As Range) As Variant
'   Aceita um intervalo como input
    
    Application.Volatile
    
    Dim ValÚnicos()     As Variant ' Matriz que contém os valores únicos
    Dim Elemento        As Variant
    Dim Transf          As Variant
    Dim i               As Integer
    Dim j               As Integer
    Dim Correspondência As Boolean
    
'   Contador para os valores únicos
    NumValÚnicos = 0
'   Loop através da matriz ou intervalo
    For Each Elemento In ConjuntoValores
        Correspondência = False
'       Verificar se o valor já foi inserido
        For i = 1 To NumValÚnicos
            If Elemento = ValÚnicos(2, i) Then
                Correspondência = True
                Exit For '(Saída do Loop)
            End If
        Next i
AddItem:
'       Caso não esteja na lista, o valor é inserido na matriz
        If Not Correspondência And Not IsEmpty(Elemento) Then
            NumValÚnicos = NumValÚnicos + 1
            ReDim Preserve ValÚnicos(2, NumValÚnicos)
            'Inserção do valor
            ValÚnicos(2, NumValÚnicos) = Elemento
            'Inserção da frequência correspondente
            ValÚnicos(1, NumValÚnicos) = Application.WorksheetFunction.CountIf(ConjuntoValores, Elemento)
        End If
    Next Elemento
    
    
'   Ordenar matriz com base nas frequências
    For i = 1 To NumValÚnicos
        For j = i + 1 To NumValÚnicos
        If ValÚnicos(1, i) <= ValÚnicos(1, j) Then
        Transf = ValÚnicos(1, j)
        ValÚnicos(1, j) = ValÚnicos(1, i)
        ValÚnicos(1, i) = Transf
        End If
        Next j
    Next i

'   Reorganizar a matriz
    For i = 1 To NumValÚnicos
        Transf = ValÚnicos(1, i)
        ValÚnicos(1, i) = ValÚnicos(2, i)
        ValÚnicos(2, i) = Transf
    Next i
      
'   Atribuição de valor para a função
    ItensÚnicos = ValÚnicos
End Function

Clique em ALT+Q para voltar a planilha.

Na célula onde vc quer que apareçam os resultados vc terá que digitar a fórmula da função =(ItensÚnicos($A$1:$E$10))
Esta fórmula é de matriz, portanto, no final da fórmula em vez de teclar ENTER, tecle CTRL+SHIFT+ENTER que as chaves serão inseridas automaticamente no início e no final da fórmula.

Vc tem que adaptar a fórmula para o intervalo da tua planilha.

Como a resposta foi útil, clique na mãozinha que fica na parte superior ao lado da ferramenta citar.

Abraço.

 
Postado : 18/01/2012 6:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

Deêm uma olhada na planilha em anexo, creio que está mais explicada!

Valeu mesmo pessoal!

 
Postado : 18/01/2012 11:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde JJsales

Baixe a planilha e veja se é isto que vc precisa:

Dê retorno.

Abraço.

 
Postado : 18/01/2012 11:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Patroppi,

Até que enfim eu consegui!!!! o/ Cara valeu mesmo!!!!

 
Postado : 18/01/2012 1:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Só mais uma duvida antes de encerrar!

Quando eu fecho as matrizes só funciona se eu preencher toda a coluna. Como vc fez pra dar certo e esconder o erro?

 
Postado : 18/01/2012 1:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Jonnys

Selecione a coluna --> Formatação Condicional ---> Nova Regra ---> Formatar Apenas Células que Contenham --> Em Formatar Apenas célula com": escolha: Erros --> Formatar ---> Fonte --> Em cor, clique na flexinha ao lado do automático e escolha Branca ---> OK. Repita a mesma operação na outra coluna.

Precisando retorne ao fórum.

Abraço. :D

 
Postado : 18/01/2012 4:47 pm