Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jmaocubo

[RESOLVIDO]Advance filters

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.