Notifications
Clear all

Buscar dados até a última linha que contenha algum valor

19 Posts
2 Usuários
0 Reactions
2,293 Visualizações
(@roberto)
Posts: 11
Active Member
Topic starter
 

Olá pessoal, estou tendo dificuldade para desenvolver uma macro que faça uma "varredura" em plan1 no intervalo de A2:H100, copie os dados somente até a última linha que contenha valores e cole estes valores em plan2. A operação copiar e colar sem problemas, porém está copiando para a plan2 todas as linhas, inclusive linhas que não há dados. Não sei se fui claro, qualquer dúvida estou a disposição.

Desde já agradeço.

 
Postado : 26/04/2013 2:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Poste seu arquivo modelo compactado!!!

Lembre se de usar a Pesquisa do fórum!!

Att

 
Postado : 26/04/2013 3:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Roberto

Para isso você pode usar:

Dim lastRow As Long
lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row

Um abraço

 
Postado : 26/04/2013 4:09 pm
(@roberto)
Posts: 11
Active Member
Topic starter
 

Ok Alexandre, segue o modelinho em anexo e abaixo a macro utilizada:

Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("AUXILIAR").Select
    Range("A2:C6").Select
    Selection.Copy
    Sheets("BANCO DE DADOS").Select
    Range("A2").Select
    Selection.Insert Shift:=xlDown
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("LANCAMENTO").Select
    ActiveWindow.SmallScroll Down:=9
    Range("H24").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("H20").Select
    Selection.ClearContents
    Range("H16").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-6
    Range("H12").Select
    Selection.ClearContents
    Range("H8").Select
    ActiveWindow.SmallScroll Down:=-9
    Selection.ClearContents
    Range("H2").Select
    Selection.ClearContents
End Sub
 
Postado : 26/04/2013 5:35 pm
(@roberto)
Posts: 11
Active Member
Topic starter
 

Só um detalhe, no exemplo anexado acima, utilizo até a coluna C e não H como informado inicialmente.

 
Postado : 26/04/2013 5:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Veja se é isso

Baixe o arquivo

Att

 
Postado : 26/04/2013 5:49 pm
(@roberto)
Posts: 11
Active Member
Topic starter
 

Alexandre e Patropi, muito agradecido pela rápida resposta e ajuda de vocês. Mas, eu tentei por diversas vezes agregar a solução de vocês junto a minha macro só que até o momento sem sucesso. Segue anexado a planilha que estou desenvolvendo. Em determinadas datas não haverá valores à lançar para alguns cartões na planilha LANÇAMENTO, desta forma, na planilha AUXILIAR 1 quase sempre haverá variações no número de linhas preenchidas. O que preciso de fato é que a macro busque os dados em AUXILIAR 1 e cole estes dados na planilha BANCO DE DADOS, em seguida limpe as células "digitáveis" da planilha LANÇAMENTOS e por fim execute o salvamento da mesma para deixar preparada para lançamentos do dia seguinte e assim sucessivamente. Pessoal, não tenho prática ou quase nenhuma experiência em desenvolvimento de macros e fazendo algumas pesquisas eu verifiquei que era necessário a criação da planilha AUXILIAR 1 para jogar os dados para a planilha BANCO DE DADOS. Não sei se isto procede, se ela não é necessária, há outra forma de fazer?

Bom feriado a todos e agradeço desde já.

Roberto
Rio Claro - SP

 
Postado : 01/05/2013 12:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

O que há de errado com meu arquivo??

Explique o que quer, copiar de onde para onde, limpar onde etc...

Veja também:
http://www.youtube.com/watch?v=cByCa4Qn6f0
Exemplo de limpar os dados

Sub LimparAleVBA()
Plan2.Range("H92,H88,H84,H80,H76,H72,H68,H64,H60,H56,H52,H48,H44,H40,H36,H32,H28,H24,H20,H16,H12,H8,H2").Cells.ClearContents
End Sub

, Agora compare sua macro com a minha e verá uma economia, só poderemos ajuda-lo se também poder entender o que pretende!
Att

 
Postado : 01/05/2013 6:46 pm
(@roberto)
Posts: 11
Active Member
Topic starter
 

Boa noite Alexandre. Não há nada de errado. Muito pelo contrário, você resolveu o problema inicial. A questão é que ao colocar a sua macro junto com a minha que eu havia criado e que esta no último arquivo em anexo, a macro está copiando e colando todas as células da planilha AUXILIAR 1 para planilha BANCO DE DADOS inclusive as células em branco e estas não deveriam ser copiadas. Devem ser copiadas apenas as células que estiverem preenchidas (cujo dados são da planilha LANCAMENTOS). O que não consigo entender é que na sua planilha que me passou acima, funciona perfeitamente, mas, quando insiro seu código na minha macro ela não funciona.
Com relação a economia nem se fale........de fato otimizou barbaridade!!!!!!!!!

 
Postado : 01/05/2013 8:28 pm
(@roberto)
Posts: 11
Active Member
Topic starter
 

Bom dia Alexandre, andei fazendo vários testes aqui e notei que o problema de estar copiando todas as células da planilha AUXILIAR 1 inclusive as células em branco, é que, na verdade as células em branco contém fórmulas. Procede essa minha observação? Se sim, há um meio de colocar na macro para ignorar célula que possui apenas fórmula e que esteja em branco?

 
Postado : 02/05/2013 6:11 am
(@roberto)
Posts: 11
Active Member
Topic starter
 

Bom dia Alexandre, andei fazendo vários testes aqui e notei que o problema de estar copiando todas as células da planilha AUXILIAR 1 inclusive as células em branco, é que, na verdade as células em branco contém fórmulas. Procede essa minha observação? Se sim, há um meio de colocar na macro para ignorar célula que possui apenas fórmula e que esteja em branco?

 
Postado : 02/05/2013 6:12 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Contribuindo:
Experimente alterar a linha:
.Range(.Range("A2"), .Range("H65536").End(xlUp)).Copy
Para:
.Range(.Range("A2"), .Range("H" & Application.WorksheetFunction.CountIf(.Range("G:G"), ">0") + 1)).Copy

 
Postado : 02/05/2013 7:00 am
(@roberto)
Posts: 11
Active Member
Topic starter
 

Boa noite Reinaldo........perfect!!!!!!!!! Funcionou. Só tem um detalhe que acabei observando somente agora. Em planilha AUXILIAR 1 pode ocorrer linhas em branco entre linhas com dados. De que forma é possível varrer (A2:H24) copiar apenas as linhas com dados e colar na outra planilha somente essas linhas com dados?

 
Postado : 02/05/2013 7:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi

 
Postado : 03/05/2013 6:03 am
(@roberto)
Posts: 11
Active Member
Topic starter
 

Bom dia. Diariamente havera lancamentos diferentes, ou seja, em plan AUX 1 que busca os valores da plan LANC pode ocorrer de ser preenchido apenas as linhas 4, 6, 8, 22, 24 e as demais ficarem em branco. Pois bem, como copiar essas linhas para plan BANCO DE DADOS sendo descartado as linhas em branco? Nao sei se fui mais claro!

Grato

 
Postado : 03/05/2013 8:02 am
Página 1 / 2