Notifications
Clear all

Macro separar valores iguais em outra coluna

11 Posts
2 Usuários
0 Reactions
1,454 Visualizações
(@rubens)
Posts: 5
Active Member
Topic starter
 

Boa tarde amigos como vão?

Tenho um pequeno problema e gostaria de pedia a ajuda de voces.

Acho que deve ser ate simples de realizar ,mas não tenho grande conhecimento em macros ou se mesmo é necessario uma macro para realizar essa tarefa.

Estou enviando a planilha modelo.

Eu tenho na coluna A Valores que estão agrupados por iguais. (são na verdade datas em texto e no formato ano,mes,dia,hora)
Ja na coluna B tenho uma serie de valores observados para cada valor da coluna A.

Vejam que existem valores unicos, duplicados ou triplicados na coluna A.
Tenho de realizar a media dos valores observados na coluna B toda vez que os dados da coluna A forem iguais e coloca-los na coluna C ficaria assim:

2014060300 286.4514465 media = X

2014060301 286.1092835
2014060301 286.6403198 media = X

2014060302 285.8790588
2014060302 286.2884827 media = X

2014060401 286.9118042
2014060401 286.4833069
2014060401 286.9239197 media = X

Muito obrigado a todos.

 
Postado : 03/02/2015 3:58 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Regras do forum:

Upload
Devido a ultrapassagem da marca de 1,5Gb de armazenamento de arquivos na hospedagem do Planilhando, limitaremos o tamanho de cada arquivo para 2Mb sendo obrigatório o uso dos formatos .zip - .rar - .ice visto a gratuidade e não geração de recursos para bancar o site.

Assim sendo, seu anexo foi compactado.

Por favor leia as regras (link na minha assinatura), e passe a compactar todos os seus anexos.

Obrigado,

Fernando

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 5:38 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Usei o MÉDIASE() numa coluna ao lado e numa tabela ao lado.

Também tomei a liberdade de criar com Subtotais.. na planilha ao lado...

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 5:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Eu não entendi, após saber quais valores são duplicados, você deseja calcular a média desses valores duplicado?

Sub So_Encontra_Os_Duplicados()
    Dim dataRange As Range, oneCell As Range
     
    With ThisWorkbook.Sheets("Plan1").Range("A:A"): Rem adjust
        Set dataRange = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
     
    For Each oneCell In dataRange
        If 1 < Application.CountIf(dataRange, oneCell.Value) Then
            With oneCell
                .Offset(0, 2) = "Duplicados"
                .EntireRow.Resize(1, .Column + 1).Interior.ColorIndex = 6
            End With
        End If
    Next oneCell
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 5:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Se baseando na ideia do fernando..... :oops:

Sub CopiandoIdeiaDoFernando()
    Range("C2:C" & Range("A1").End(xlDown).Row).Formula = "=AVERAGEIF($A$2:$A$7632,A2,$B$2:$B$7632)"
    Range("C2:C" & Range("A1").End(xlDown).Row).Value = Range("C2:C" & Range("A1").End(xlDown).Row).Value
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 5:51 pm
(@rubens)
Posts: 5
Active Member
Topic starter
 

Boa noite!!

Eu não entendi, após saber quais valores são duplicados, você deseja calcular a média desses valores duplicado?

Sub So_Encontra_Os_Duplicados()
    Dim dataRange As Range, oneCell As Range
     
    With ThisWorkbook.Sheets("Plan1").Range("A:A"): Rem adjust
        Set dataRange = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
     
    For Each oneCell In dataRange
        If 1 < Application.CountIf(dataRange, oneCell.Value) Then
            With oneCell
                .Offset(0, 2) = "Duplicados"
                .EntireRow.Resize(1, .Column + 1).Interior.ColorIndex = 6
            End With
        End If
    Next oneCell
End Sub

Att

Boa noite!!

Se baseando na ideia do fernando..... :oops:

Sub CopiandoIdeiaDoFernando()
    Range("C2:C" & Range("A1").End(xlDown).Row).Formula = "=AVERAGEIF($A$2:$A$7632,A2,$B$2:$B$7632)"
    Range("C2:C" & Range("A1").End(xlDown).Row).Value = Range("C2:C" & Range("A1").End(xlDown).Row).Value
End Sub

Att

Boa noite e obrigado pela ajuda.

Meu problema é que os valores da coluna A que guardam a data podem ser: unicos, ai eu guardo valor da coluna b. na coluna C (2014060300 286.4514465 media = 286.4514465)

Duplicados: Ai faço a media dos dois valores em b, e guardo em C
2014060301 286.1092835
2014060301 286.6403198 media = 286.3748

Ou triplicados : Ai faço a media dos tres em b e guardo em C:
2014060401 286.9118042
2014060401 286.4833069
2014060401 286.9239197 media = 286.7730

O que tem tornado trabalhoso é que são muitas linhas e não existe um ciclo pré determinado para as celulas serem duplicados ou triplicadas.

Obrigado novamente

 
Postado : 03/02/2015 6:09 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Parece que vc nem abriu meu anexo.
Por favor, abra-o e veja se atende e se tem dúvidas....

Eu fiz de 3 maneiras diferentes, sem macro, e todas atendem sua necessidade...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 6:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Então o código abaixo deve ajudar...

Sub CopiandoIdeiaDoFernandoV2()
    Range("C2:C" & Range("A1").End(xlDown).Row).Formula = "=IF(COUNTIF($A$2:$A$7632,A2)>1,AVERAGEIF($A$2:$A$7632,A2,$B$2:$B$7632),"""")"
    Range("C2:C" & Range("A1").End(xlDown).Row).Value = Range("C2:C" & Range("A1").End(xlDown).Row).Value
End Sub

OU..........

Sub CopiandoIdeiaDoFernandoV2()
    Range("C2:C" & Range("A1").End(xlDown).Row).Formula = "=IF(COUNTIF($A$2:$A$7632,A2)>1,AVERAGEIF($A$2:$A$7632,A2,$B$2:$B$7632),B2)"
    Range("C2:C" & Range("A1").End(xlDown).Row).Value = Range("C2:C" & Range("A1").End(xlDown).Row).Value
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 6:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Segue novo anexo, que cabe feito uma luva e está igual sua proposta.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 6:25 pm
(@rubens)
Posts: 5
Active Member
Topic starter
 

Segue novo anexo, que cabe feito uma luva e está igual sua proposta.

WOW!

Simplesmente fantastico.

Muito Obrigado Fernando, lhe devo uma cerveja cara o/

Obrigado a todos que gastaram seu tempo solucionando o problema,

Boa noite

 
Postado : 03/02/2015 7:25 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rubens, legal q bom q deu certo.
Só mais uma coisa:
Qdo qquer resposta te satisfizer, clique na mãozinha da resposta.

Quando for marcar um tópico como resolvido, clique no botão verde da própria resposta que te atendeu, e não no botão verde do tópico... assim, fica registrado qual foi a resposta... Isso pq se algum dia alguém tiver dúvida parecida, fica mais fácil pra pesso encontrar o que foi que solucionou... eu já arrumei pra vc, mas não esqueça nos próximos tópicos... a mãozinha serve para agradecer, o botão verde serve para marcar a resposta boa e encerrrar o tópico como resolvido....

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/02/2015 8:01 pm