Notifications
Clear all

copiar valores de coluna filtrada por macro

10 Posts
2 Usuários
0 Reactions
2,015 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Ola a todos. "pelo menos aos que estiverem lendo"

estou tentando implementar uma ideia antiga na minha planilha

http://forum.baboo.com.br/index.php?/topic/770467-achar-m%C3%A1ximo-comum-de-3-argumentos-com-formula-ou-macro/
Agora já me sinto mais capacitado para isso, mas como a memoria é fraca e a maioria que aprendi já esqueci

preciso pegar valores filtrados na coluna,
Mas por macro, de preferência também linha por linha naquela coluna
é para pegar cores formatadas condicionalmente "formatação condicional", eu consigo somar e contar esses valores

http://www.planilhando.com.br/forum/viewtopic.php?f=28&t=11037
fiz essa planilha de teste e de aprendizado ...

li um monte de coisa pela net mas o raciocínio está meio lento "apesar de ser algo que já fiz antes"

se alguém puder ajudar...

 
Postado : 24/03/2014 10:45 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Será que ninguém sabe mesmo como copiar valores selecionados por auto filtro?

tenho essa macro que apresentei no tópico acima na seção macetes e dicas
Fiz o mais difícil que é somar ou contar valores pintados por formatação condicional
mas eu preciso pegar os valores selecionados pelo filtro para colar em outra guia

Sub Somar()
  Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    Range("L1").Value = "x"
    
 [code]   For col = 3 To 88

    ActiveSheet.AutoFilterMode = False
    ActiveSheet.Range(Cells(8, col), Cells(49, col)).AutoFilter Field:=1, Criteria1:=RGB(204, 192, 218), Operator:=xlFilterCellColor
        
    lin = Cells(70, col).End(xlUp).Row
     valori = Cells(70, col).End(xlUp).Value
     fimcol = Cells(70, col).End(xlUp).Address
     Lcol = Mid(fimcol, InStr(fimcol, "$") + 1, InStr(2, fimcol, "$") - 2)
   csd = Cells(4, 1).Value
   
    If valori <> "n" Then
Cells(6, col).Value = Application.WorksheetFunction.Subtotal(csd, Range(Lcol & 9, Lcol & 49))
    Else
    Cells(6, col) = ""
    End If
    
    Next
    Range("L1").Value = ""
      ActiveSheet.AutoFilterMode = False
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

download/file.php?id=11849

Eu preciso copiar valores selecionador na coluna do filtro

sei que tem como fazer pq já fiz antes e já vi macros para isso, mas não lembro como e não estou achando, e oq que acho não entendo para adaptar." é a idade"

E se possível mas não obrigatório saber como verificar celila por celula selecionada pelo auto filtro como endereço e valor.

imagina a capacidade desse codigo;

celulas selecionadas por formulas da formatação condicional sendo trabalhadas com macros
tudo bem que tem que ser coluna por coluna mas mesmo assim é um alivio escolher coisas por uma única formula que verifica celula por celula independentemente,

obrigado e até mais.

 
Postado : 25/03/2014 9:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aqui no serviço não temos como baixar arquivos de drivers virtuais, mas se está querendo filtrar para outra aba teria de usar:
Action:=xlFilterCopy e CopyToRange, de uma olhada no exemplo do tópico abaixo se ajuda.

Copiar um intervalo de células para outro arquivo
viewtopic.php?f=10&t=2065

[]s

 
Postado : 25/03/2014 10:13 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

esses operadores funcionam com o AutoFilter ?? tentei e não consegui
e AdvancedFilter não funciona para oq eu quero

assim funciona

'Sheets("Plan1").Select
 Range(Lcol & 8, Lcol & 49).Select
Selection.Copy
Sheets("Plan2").Select
 Range(Lcol & 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Sheets("Plan1").Select

Assom não

Sheets("Plan2").Range(Lcol & 8, Lcol & 49) = Sheets("Plan1").Range(Lcol & 8, Lcol & 49).Value

Alguma dica do que se fazer?

 
Postado : 25/03/2014 11:55 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Assim quase foi mas tem algo faltando

Range(Lcol & 8, Lcol & 49).Copy
Sheets("Plan2").Range(Lcol & 8, Lcol & 49).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Postado : 25/03/2014 12:01 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

O fórum era para permitir edição até alguém mais postar nele,

Mas explicando, o ultimo código funciona, mas...

Estranhamente quando tem menos de 3 valores selecionados pelo filtro os valores se repetem varias linhas para baixo (????)

 
Postado : 25/03/2014 12:17 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

assim parece ir sem problemas
Range(Lcol & 9, Lcol & 49).Copy
Sheets("Plan2").Range(Lcol & 7).PasteSpecial Paste:=xlPasteValues

mas ainda preciso saber se tem como verificar valor e endereço das celulas filtradas uma por uma

O código completo para copiar e somar ou contar células pela Cor da formatação condicional é esse

Sub Somar()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    Range("L1").Value = "x"
    
For col = 3 To 88
        ActiveSheet.AutoFilterMode = False
        ActiveSheet.Range(Cells(8, col), Cells(49, col)).AutoFilter Field:=1, Criteria1:=, Operator:=xlFilterCellColor ', _

             valori = Cells(70, col).End(xlUp).Value
             
    If valori <> "n" Then
            fimcol = Cells(70, col).End(xlUp).Address
            Lcol = Mid(fimcol, InStr(fimcol, "$") + 1, InStr(2, fimcol, "$") - 2)
            csd = Cells(4, 1).Value
            
            Cells(6, col).Value = Application.WorksheetFunction.Subtotal(csd, Range(Lcol & 9, Lcol & 49))
        
            Range(Lcol & 9, Lcol & 49).Copy
            Sheets("Plan2").Range(Lcol & 7).PasteSpecial Paste:=xlPasteValues '
        
       Else
            Cells(6, col) = ""
    End If
    
Next 'col
        Range("L1").Value = ""
        ActiveSheet.AutoFilterMode = False
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub

( Tem muito a ser feito e só pega numa area e coluna por coluna, mas é melhor que nada e bem simples)

Ele pega valores de cor RGB(204, 192, 218) da coluna C até CL da linha 9 até 49.
Mas facilmente alterável
Na linha 8 tem que ter "n" e ser formata pela mesma cor que a macro vai procurar pode ser por condicional tbm
não pode ter cores fixa na mesma cor que a macro vai procurar, se necessário aplique um filtro de outra cor por condicional abaixo da condicional que vai informar os valores para a macro.

está aí todo o trabalho de pesquisa e teste e muitas noites de sono perdidas.

se alguém tiver alguma dica para pegar valores do autofiltro e outras opções para ele eu aceito

 
Postado : 25/03/2014 1:53 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Edcronos, pelo que vi e se entendi uma das questões é que você diz que está pegando da coluna C até CL e seu modelo vai até a Coluna CJ que é representada pelo equivalente a Coluna 88 - For col = 3 To 88, e nas celulas "CH8, CI8 e CJ8 " não tem a letra "n" e por isto está copiando errado.
Veja se é isto, o restante vou procurar entender melhor.
Uma pergunta, como é para ficar o layout da aba que está recebendo osvalores ?

[]s

 
Postado : 25/03/2014 7:34 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

nas colunas estava indo bem,

o problemas era as linhas
quando estava assim

Range(Lcol & 8, Lcol & 49).Copy
Sheets("Plan2").Range(Lcol & 8, Lcol & 49).PasteSpecial Paste:=xlPasteValues 

por algum motivo maluco com menos de 3 valores filtrados os valores se repetiam varias linhas para baixo
tipo:
n
33
n
33
n
33

mas assim não acontece e funciona normal

Range(Lcol & 9, Lcol & 49).Copy  <<<mudei para não pegar o "n"
Sheets("Plan2").Range(Lcol & 7).PasteSpecial Paste:=xlPasteValues

sobre o layout da aba que está recebendo os valores, e colunas sem "N" e outras diferenças , esse foi um teste "muitos testes"
não aditava definir o layout e oq fazer com os dados se não conseguia pegar.

eu tenho que fazer varias coisas com esses valores
uma delas
http://forum.baboo.com.br/index.php?/to ... -ou-macro/
está marcado como resolvido mas não adiantava deixar aberto.

pode ver que demorei mais avancei um pouco

pelo menos uma coisa
o pessoal todo falava que não dava para pegar valores pela cor de formatação condicional e aí está uma planilha que faz isso
nem é tão complicado

 
Postado : 26/03/2014 12:57 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

A minha planilha tem 142 colunas mais de 5000 linhas separados por setores que podem mudar de tamanho e esses números variam

Essa planilha que eu postei foi só um teste e aproveitei para apresentar a ideia e a facilidade.
se bem que nem sei pq posto duvidas nos furuns, a maoria fica sem resposta e eu acabo arrumado solução sozinho
não sei se é pq sou chato e ansioso e acabo escrevendo muito, se é difícil de entender oq eu quero, se minhas perguntas são complicadas e ninguém sabe, ou todas as alternativas :roll: , mas vou largar desse vicio

 
Postado : 26/03/2014 2:12 am