Notifications
Clear all

Copiar fórmulas se houver dados em uma coluna específica

6 Posts
2 Usuários
0 Reactions
1,316 Visualizações
(@_will_)
Posts: 0
New Member
Topic starter
 

Bom dia amigos,

Preciso de mais uma ajuda com vba/macros.

Tenho um relatório com várias linhas e colunas e ao lado do relatório tem várias fórmulas.
Todos os dias os números de linhas variam.
Preciso criar uma fórmula para que se a coluna A estiver preenchida, então, deverá copiar as fórmulas. Algo desse tipo.

Veja o exemplo em anexo.

Podem me ajudar?

Obrigado

 
Postado : 19/11/2015 5:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

will, no seu exemplo já temos varias linhas preenchidas, e somente uma com as formulas, então uma das questões a entender seria :

Voce quer uma rotina para ser executada apos estas linhas estarem preenchidas e copiar as formulas verificando se na coluna A temos dados, ou ir inserindo as formulas conforme vai se digitando as linhas ?

[]s

 
Postado : 19/11/2015 5:27 am
(@_will_)
Posts: 0
New Member
Topic starter
 

Obrigado pela rápida resposta Mauro.

Eu extraio um relatório do sistema e eu copio e colo na planilha, neste caso seria melhor executar após as linhas estarem preenchidas.
Eu pensei em algo assim, se eu clicasse em um botão da macro, atualiza todas as fórmulas.
No relatório tem mais de 30 mil itens.

Obrigado.

 
Postado : 19/11/2015 5:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente assim...

Sub AleVBA_15833()
    Dim lastrow As Long
     
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
     
    Application.ScreenUpdating = False
        Range("N2").Formula = "=SUM(A2:L2)"
        Range("O2").Formula = "=MAX(A2:L2)"
        Range("P2").Formula = "=MIN(A2:L2)"
        Range("Q2").Formula = "=AVERAGE(A2:L2)"
        Range("N2:Q2").AutoFill Destination:=Range("N2:Q" & lastrow)
        Range("N2:Q" & lastrow).Value = Range("N2:Q" & lastrow).Value
    Application.ScreenUpdating = True
     
End Sub

Att

 
Postado : 19/11/2015 6:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Will, pelo seu ultimo comentário, estou supondo que apos copiar e colar os dados exttraidos esta planilha ainda não contenha as formulas, e portanto temos de inseri-las, se for isto utilize a rotina abaixo:

Sub InseriFormulaLoop()
    Dim LastRow As Long
    
    'Verifica a Ultima Linha na Coluna "A"
    LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    'Loop na Coluna A
    For i = 2 To LastRow
        
        If IsEmpty(ActiveSheet.Cells(i, 1)) = False Then 'Se "A" for vazia pula para a proxima celula
            'Adiciona as formulas
            ActiveSheet.Cells(i, 14).FormulaLocal = "=SOMA(A" & i & ":L" & i & ")"
            ActiveSheet.Cells(i, 15).FormulaLocal = "=MÁXIMO(A" & i & ":L" & i & ")"
            ActiveSheet.Cells(i, 16).FormulaLocal = "=MÍNIMO(A" & i & ":L" & i & ")"
            ActiveSheet.Cells(i, 17).FormulaLocal = "=MÉDIA(A" & i & ":L" & i & ")"
        
        End If
        
    Next i
    
End Sub

Na rotina do Alexandre, estamos inserindo as formulas e depois preenchendo as demais sem efetuar a verificação se na Coluna "A", então se não for necessário efetuar esta verificação ela tambem servirá ao proposito.

[]s

 
Postado : 19/11/2015 6:52 am
(@_will_)
Posts: 0
New Member
Topic starter
 

Obrigado Alexandre e Mauro!!!

Show de bola!

 
Postado : 19/11/2015 7:00 am