Notifications
Clear all

Macro para colar valores com condição

14 Posts
2 Usuários
0 Reactions
2,022 Visualizações
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Boa tarde,

gostaria da ajuda de vocês, possuo uma planilha que contém uma coluna com entrada de dados diários e gostaria que as informações fossem copiadas como valor para outra coluna respeitando uma condição. Precisa ser com copiar valores porque a coluna com entrada de dados diários será apagada e preciso manter os valores nas outras colunas.

estou enviando um anexo.

Valeu

 
Postado : 20/08/2012 11:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Olá seja bem vindo, tata!!! (seu arquivo vai ser excluído!!)

Por favor Leia os links abaixo, obrigado!!!

Nossas Regras
viewtopic.php?f=7&t=203

Marcar Tópico como Resolvido e Agradecimento
viewtopic.php?f=7&t=3784
Lembre se de usar nossa base de dados (Pesquisa)
Att

 
Postado : 20/08/2012 11:36 am
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Gostaria de saber o motivo da exclusão do arquivo. É porque não estava compactado?

 
Postado : 20/08/2012 11:57 am
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

seque arquivo compactado, estou precisando muito da ajuda de vocês.

 
Postado : 20/08/2012 2:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se é o que espera

Sub SalvaVlr()
Dim Tc As Long, Dia As Long
Dia = Range("B5")
Tc = Application.WorksheetFunction.Match(Dia, Range("d7:ag7"), 0)
Cells(8, Tc + 3) = Range("B8").Value
Cells(9, Tc + 3) = Range("B9").Value
End Sub
 
Postado : 20/08/2012 5:52 pm
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Ficou perfeito, muito obrigado me ajudaram muito.

 
Postado : 21/08/2012 8:19 am
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Pessoal para aprimorar minha planilha ainda nesse exemplo, gostaria que essa macro executasse quando a célula b5 fosse alterada.

 
Postado : 21/08/2012 3:19 pm
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Pessoal mais uma força minha macro está com 149 linhas com isso está muito lenta teria com torna-la mais rápida.

 
Postado : 22/08/2012 8:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não há uma relação direta entre qtde de linhas de codigo vs velocidade; vc precisará fornecer maiores detalhes

 
Postado : 22/08/2012 8:15 am
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Reinaldo, o problema é que minha macro possui 149 linhas como descrito a baixo,com isso ela fica muito lenta. Teria também como a macro executasse quando a célula b5 fosse alterada?

Sub SalvaVlr()
Dim Tc As Long, Dia As Long
Dia = Range("B5")
Tc = Application.WorksheetFunction.Match(Dia, Range("d7:ag7"), 0)
Cells(8, Tc + 3) = Range("B8").Value
Cells(9, Tc + 3) = Range("B9").Value
.
.
.
Cells(149, Tc + 3) = Range("B149").Value
End Sub

 
Postado : 22/08/2012 9:01 am
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

Pessoal, tentei fazer dessa forma a baixo mais fica repetindo a célula "b8". Como faço para retornar o intervalo "b8:b149"?

Sub SalvaVlr()
Dim Tc As Long, Dia As Long
Dia = Range("B5")
Tc = Application.WorksheetFunction.Match(Dia, Range("d5:ag5"), 0)
For i = 8 To 149
Cells(i, Tc + 3) = Range("b8:b149").Value
Next
End Sub

 
Postado : 22/08/2012 12:41 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

for i =8 to 149
cells(i,TC+3)=range("B"&i)
next

 
Postado : 22/08/2012 12:55 pm
 tata
(@tata)
Posts: 9
Active Member
Topic starter
 

valeu ficou top, só falta ela executar quando a célula "b5" for alterada.

 
Postado : 22/08/2012 1:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Seria.. :roll:
Não testado..

Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim Tc As Long, Dia As Long, i As Long 
     
    If Intersect(Target, Range("B5")) Is Nothing Then Exit Sub 
     
    Application.EnableEvents = False 
    Dia = Range("B5").Value 
     
    Tc = -1 
    On Error Resume Next 
    Tc = Application.WorksheetFunction.Match(Dia, Range("d5:ag5"), 0) 
    On Error Goto 0 
     
    If Tc <> -1 Then 
        For i = 8 To 149 
            Cells(i, Tc + 3) = Range("B" & i) 
        Next 
    End If 
    Application.EnableEvents = True 
End Sub 
 
Postado : 22/08/2012 5:57 pm