Notifications
Clear all

Macro Filtro Coluna Variável

5 Posts
2 Usuários
0 Reactions
794 Visualizações
(@arthurab)
Posts: 2
New Member
Topic starter
 

Bom Dia, Prezados !

Preciso de ajuda para criar uma macro para filtrar uma coluna e copia-la. Minha dificuldade é que recebo todo dia um arquivo e a coluna não está no mesmo lugar, tem dia que vem na coluna H, tem dia que está na L, mas sempre com o mesmo nome de cabeçalho: “cód. clie”.

Podem me sugerir alguma função que eu consiga filtrar a coluna que tenha o nome “cód. clie”?
Estava usando o auto AutoFilter e no Field colocava o numero da coluna, mas não da certo porque cada dia a coluna vem numa posição diferente.

Muito obrigado.

 
Postado : 09/11/2017 2:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Faça um Loop nas colunas, lembre-se de ajustar a qde de colunas na rotina abaixo :

Sub Loop_Colunas()
    Dim i As Double

    'Qde de colunas a percorrer
    For i = 1 To 6
        
        If Cells(1, i).Value = "cód. Clie" Then
            'coloque aqui sua rotina
            MsgBox "coloque aqui sua rotina"
            
            'Sai do loop
            Exit For
        End If
    
    Next i

End Sub

[]s

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

 
Postado : 09/11/2017 5:43 am
(@arthurab)
Posts: 2
New Member
Topic starter
 

Bom Dia, Mauro !
Obrigado pela ajuda.

Fiz da forma que você orientou, mas não inicia o loop, só aparece a mensagem.
Será que faltou não faltou nada?

Obrigado.

 
Postado : 10/11/2017 1:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Arthur, se aparece a mensagem é porque encontrou a coluna com o nome indicado "cód. Clie", e ao encontrar sai do Loop.

Mas para dar uma resposta mais precisa, o ideal seria postar como que fez os ajustes, lembrando que no exemplo estamos verificando somente as 6 primeiras colunas supondo que o cabeçalho se encontra na linha 1 :
'Qde de colunas a percorrer
For i = 1 To 6

If Cells(1, i).Value - o numero 1 indica a linha e o "i" a Variável para as colunas.

[]s

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

 
Postado : 10/11/2017 5:14 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Enviado: 11 Nov 2017, 04:49
De: arthurab
Para: Mauro Coutinho

Mauro,
Desculpa te amolar com esse assunto ainda, mas surgiu mais um problema. Consegui rodar essa macro que vc passou, ela encontra a coluna que preciso, mas na hora de aplicar o autofilter ele pede no campo field o número da coluna. Como eu poderia indicar o filtro para essa coluna que o loop achou?

Arthur, só defina o tópico como RESOLVIDO se realmente tiver chego a solução esperada.
Quanto a msg em PVT, para saber o endereço e numero da coluna utilize conforme abaixo :

Sub Loop_Colunas()
    Dim i As Double
    
    'Qde de colunas a percorrer
    For i = 1 To 6
        
        If Cells(1, i).Value = "cód. Clie" Then
            'coloque aqui sua rotina
            MsgBox "coloque aqui sua rotina"
            
            'Endereço da celula
            MsgBox "O cód. Clie se encontra na celula " & Cells(1, i).Address(0, 0)
            
            'Numero da Coluna
            MsgBox "O cód. Clie se encontra na coluna nº " & Cells(1, i).Column
            
            'Sai do loop
            Exit For
        End If
    
    Next i

End Sub

[]s

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

 
Postado : 15/11/2017 8:46 pm