Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jmaocubo

[RESOLVIDO]Advance filters

Recommended Posts

jmaocubo

Alguém tem experiência em advance filters?

Tenho uma tabela que começa na célula M53 e acaba na célula Q99 (M53:Q99)

Nesta tabela são importados valores de uma outra folha através de um código VBA

Depois tenho na mesma folha uma outra tabela com o range A53:I72

Quando são importados os dados vem uma descrição na coluna M, um valor na coluna N, outro valor na coluna P e outro na coluna Q

Ex:

M53: Demolições

N53: 1000€

P53: 10

Q53: 2

Acontece que existe determinadas colunas que têm o valor zero por não existir valor.

O que pretendia era com base na coluna N filtrar para excluir os dados com valor zero e copiar os dados para a tabela 2

da seguinte forma:

M53 passa para a A53

N53 passa para a F53

O53 passa para a D53

Ou pensam que existe uma maneira mais facil e rápida de fazer isto? Agradeço as vossas opiniões.

Obrigado

imageyfy.th.jpg

Uploaded with ImageShack.us

Share this post


Link to post
Share on other sites
jmaocubo

Não percebi...  :)

Basicamente o pretendido é pegar na tabela 1 retirar (virtualmente) as linhas com valor de zero na coluna N e copiar coluna a coluna para as respectivas colunas na tabela 2

Share this post


Link to post
Share on other sites
Tuntankamon

Se é isso, é um simples ciclo for semelhante ao anterior mas que verifica o valor de N para saber se copia ou não...

Share this post


Link to post
Share on other sites
MetalFatigue

Por advanced filters não vais lá. Tem de ser mesmo código, ciclo como disse o r00tfixxxer

O advanced filter copia-te todos dados, filtrados, tal e qual como estão. Não podes definir que campo vai para onde.

Share this post


Link to post
Share on other sites
jmaocubo

Esqueci-me de colocar aqui como resolvi 😳

segui a sugestão do Tuntankamon e criei um ciclo.

Sub Subemp()
Application.ScreenUpdating = False


Dim lastRow As Long
        Dim lastResultRow As Long
        Dim x As Long
        
        ' Verifica qual a ultima célula preenchida
        lastRow = Cells(Rows.Count, 14).End(xlUp).Row
        
        Range("A53:F80").ClearContents
                
        lastResultRow = 53 ' linha onde vai começar
        
        ' Ciclo em todas as linhas
        For x = 53 To lastRow
        
           ' verifica se o valor é maior que zero
           If Cells(x, 14).Value > 0 Then
           
                ' Copia os valores
                Cells(lastResultRow, 6).Value = Cells(x, 14).Value
                Cells(lastResultRow, 4).Value = Cells(x, 15).Value
                Cells(lastResultRow, 1).Value = Cells(x, 13).Value
                               
                lastResultRow = lastResultRow + 1
           
           
           End If
           
           Next


Application.ScreenUpdating = True

End Sub

Cumprimentos e Obrigado

Miguel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.