Notifications
Clear all

Trabalhar com valores dinâmicos

23 Posts
2 Usuários
0 Reactions
3,354 Visualizações
(@larocca)
Posts: 12
Active Member
Topic starter
 

Olá pessoal,

Seguinte: Tenho uma planilha que na coluna A, possui valores que são atualizados dinamicamente 1 vez ao dia. Hoje por exemplo, na lina A1, tenho o valor 10. Quando atualizar está planilha amanhã, o conteúdo de A1 será atualizado para o valor 20. Gostaria de saber se é possível colocar uma fórmula na célula B1 que me mostre a diferença entre o valor de ontem (10) e o valor de hoje (20)

Desde já obrigado.

 
Postado : 24/04/2012 6:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Larocca,
Para isso você teria que salvar o valor de ontem em uma célula qualquer antes que fosse alterado.
Em que momento esse valor muda? de uma dia para o outro? você executa alguma macro?

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

 
Postado : 25/04/2012 4:22 am
(@larocca)
Posts: 12
Active Member
Topic starter
 

Cara é dessa forma que faço hoje, eu salvo o valor em outra célula para ele não ser atualizado. A atualização dá célula se dá quando eu clico em Dados - Atualizar Tudo, onde ele atualiza o valor da célula com valores provenientes de um OLAP.

O que resolveria pra mim é uma fórmula que calculasse a difereça da célula A1 antes de ser atualizado e depois de ser atualizado. Ou uma fórmula que pegasse o valor da célula que vem do OLAP e colasse em outra célula como Valor.

 
Postado : 25/04/2012 5:16 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Você disse que já faz isso atualmente colar manual o valor antigo antes de ser alterado correto? o que você precisa seria só automatizar isso?
se for, acho que daria pra você criar uma macro para atualizar os dados OLAP porém antes de executar essa macro, você copia o valor da célula A1 ( antiga ) para uma célula qualquer, ai na célula b1 você gera o calculo da diferença.

Você conhece alguma coisa de macro?

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

 
Postado : 25/04/2012 5:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!

Não é o que você quer, porém deve te ajudar.

Quando você digitar em A1, os valores passaram para B2, B3, B4, B5 Etc...

Dentro do Editor VBA, Aperte Alt + F11, cole o código dentro da Plan1 do lado esquerdo do Editor.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Target.Value
End Sub

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

 
Postado : 25/04/2012 6:12 am
(@larocca)
Posts: 12
Active Member
Topic starter
 

Bom dia!

Não é o que você quer, porém deve te ajudar.

Quando você digitar em A1, os valores passaram para B2, B3, B4, B5 Etc...

Dentro do Editor VBA, Aperte Alt + F11, cole o código dentro da Plan1 do lado esquerdo do Editor.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Target.Value
End Sub

Cara isso se encaixa perfeitamente para mim. A única alteração que eu preciso e não estou conseguindo fazer é que ao invés de passar para B2, B3, B4, passe o valor para B1, C1, D1, E1..

 
Postado : 25/04/2012 8:10 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!

Não é o que você quer, porém deve te ajudar.

Quando você digitar em A1, os valores passaram para B2, B3, B4, B5 Etc...

Dentro do Editor VBA, Aperte Alt + F11, cole o código dentro da Plan1 do lado esquerdo do Editor.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Target.Value
End Sub

Cara isso se encaixa perfeitamente para mim. A única alteração que eu preciso e não estou conseguindo fazer é que ao invés de passar para B2, B3, B4, passe o valor para B1, C1, D1, E1..

Tente alterar assim:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    Cells(Rows.Count, 2).End(xlUp).Offset(0, 0) = Target.Value
End Sub

Se funcionar finalize o tópico por favor!

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

 
Postado : 25/04/2012 8:16 am
(@larocca)
Posts: 12
Active Member
Topic starter
 

Cara testei o código, e ele está passando o valor apenas para B1.. Quando eu altero A1, ao invés de ele passar para C1, ele está mudando o valor de B1..

 
Postado : 25/04/2012 8:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!
Tente...

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Cells.Count <> 1 Then
        Application.EnableEvents = True
        Exit Sub
    End If
    If Intersect(Target, Range("A1")) Is Nothing Then
        Application.EnableEvents = True
        Exit Sub
    End If
    Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Value = Target.Value
    Application.EnableEvents = True
End Sub

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

 
Postado : 25/04/2012 11:45 am
(@larocca)
Posts: 12
Active Member
Topic starter
 

Boa tarde!!
Tente...

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Cells.Count <> 1 Then
        Application.EnableEvents = True
        Exit Sub
    End If
    If Intersect(Target, Range("A1")) Is Nothing Then
        Application.EnableEvents = True
        Exit Sub
    End If
    Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Value = Target.Value
    Application.EnableEvents = True
End Sub

Cara, muito obrigado mesmo! Só peço um último favor: O funcionamento está perfeito. O valor digitado em A1 tem que passar pra B1, depois C1, exatamente como vc fez. Só preciso que todas as células da coluna A façam o mesmo: Valor digitado em A2 passa valores para B2, C2.. Valor digitado em A3 passa valores para B3, C3

Desde já muito obrigado! Você está me ajudando muito aqui!!

 
Postado : 25/04/2012 12:20 pm
(@larocca)
Posts: 12
Active Member
Topic starter
 

Identifiquei outra coisa aqui: O código VBA passa os valores para as colunas ao lado, desde que o valor inputado em A1 seja diferente. No meu caso, o conteúdo da célula sempre será o vínculo do cubo OLAP, e embora os valores mudem, o vínculo continua o mesmo e a fórmula precisa identificar a mudança nos valores.

Alexandre, se puder me ajudar, a planilha está em anexo. Abraço!

 
Postado : 25/04/2012 1:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Veja se isso te ajuda.

Obs: eu não olhei sua ultima postagem.

Cumpra as regras, não poste arquivo sem antes compactar!!!!!

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Cells.Count <> 1 And Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Cells(Target.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = .Value
        Application.EnableEvents = True
    End With
End Sub

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

 
Postado : 25/04/2012 7:34 pm
(@larocca)
Posts: 12
Active Member
Topic starter
 

Boa noite!!

Veja se isso te ajuda.

Obs: eu não olhei sua ultima postagem.

Cumpra as regras, não poste arquivo sem antes compactar!!!!!

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Cells.Count <> 1 And Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Cells(Target.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = .Value
        Application.EnableEvents = True
    End With
End Sub

Cara foi mal por ter postado sem compactar!!

Seguinte é isso mesmo, o último ajuste é fazer a célula reconhecer os valores atualizados através de um vínculo. O código VBA está passando os valores para as colunas ao lado quando o conteúdo da primeira coluna tiver um valor diferente, mas como no caso o conteúdo é sempre o mesmo porque se trata de um vínculo, ele não está passando.

Segue em anexo uma planilha de exemplo. Na plan1, o intervalo A1:A7 é um vínculo da plan2 intervalo A1:A7. Quando eu alterar os valores na plan2, ele precisa então executar o código, e passar o conteúdo da plan1 A1:A7 para B1:B7 e assim por diante...

Desde já agradeço!!! Muito Obrigado pela ajuda!!!

 
Postado : 26/04/2012 5:55 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!
O exemplo que mandei foi baseado em A, ao menos não tentou adaptar....tente.

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Cells.Count <> 1 And Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Cells(Target.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = .Value
        Application.EnableEvents = True
    End With
End Sub

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

 
Postado : 26/04/2012 6:18 am
(@larocca)
Posts: 12
Active Member
Topic starter
 

Bom dia!!
O exemplo que mandei foi baseado em A, ao menos não tentou adaptar....tente.

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Cells.Count <> 1 And Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Cells(Target.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = .Value
        Application.EnableEvents = True
    End With
End Sub

Ok cara, vou tentar aqui.. tá quase!!!

Abraço

 
Postado : 26/04/2012 7:45 am
Página 1 / 2