Notifications
Clear all

Resultado na Célula L4 e M4

6 Posts
3 Usuários
0 Reactions
1,158 Visualizações
(@carlam)
Posts: 0
New Member
Topic starter
 

Pessoal,

Preciso muito de uma ajuda, estou escrevendo no VBA o código abaixo, que funcionou perfeitamente para o cálculo que preciso, uma vez que minha referência não é absoluta, um detalhe é que, o resultado na célula L4 já vem o número 1,75666913... por exemplo, quando eu gostaria que fosse (=H4/$H$10) lembrando que a referência de H10 é relativa pois depende do segundo comando .End(xlDown)... Pretendo depois copiar para linhas abaixo, por isso precisaria que aparecesse a memória.. Sabem como é possível corrigir isso?

primeiro = Range("l4").Offset(0, -4)
segundo = .End(xlDown)
Range("l4") = primeiro / segundo

Neste caso, eu multiplico o resultado de l4 por um último subtotal da coluna, gostaria que viesse a info =L4*$H$32 no lugar do resultado direto 1,070528 por exemplo

um = [M4].Offset(0, -1)
dois = [H1048576].End(xlUp)
Range("M4") = um * dois

Espero ter conseguido me expressar.. obrigada!

 
Postado : 26/01/2016 8:21 am
(@mprudencio)
Posts: 0
New Member
 

Nao entendi direito o que vc quer so entendi que é um calculo com base na ultima linha (é o que parece), se for isso é so declarar duas variaveis e carregar os valores que se deseja calcular e depois realizar os calculos pelas variaveis

Exemplo de divisao ( que é o que parece)

Sub calcula()

dim a as long
dim b as long
dim resultado as long

a = 50
b = 10 
resultado = range("A1").value = a / b

End sub

Isso foi o que deu pra entender se nao é isso faz duas coisas disponibiliza o arquivo modelo, com dados de exemplo mostrando o resultado esperado e explica novamente.

 
Postado : 26/01/2016 8:39 am
(@carlam)
Posts: 0
New Member
Topic starter
 

Olá,

Muito Obrigada pelo rápido retorno. Segue arquivo, nele abri em três sheets, de um exemplo bco de dados que preciso rodar a macro, uma outra com o resultado da macro criada, e outra com a expectativa.. lembrando que o "bco de dados" é um exemplo, e a macro será rodada em outros com diferentes qtdes de linhas por isso estou tentando calcular este último passo com referência relativa..

Tks

Nao entendi direito o que vc quer so entendi que é um calculo com base na ultima linha (é o que parece), se for isso é so declarar duas variaveis e carregar os valores que se deseja calcular e depois realizar os calculos pelas variaveis

Exemplo de divisao ( que é o que parece)

Sub calcula()

dim a as long
dim b as long
dim resultado as long

a = 50
b = 10 
resultado = range("A1").value = a / b

End sub

Isso foi o que deu pra entender se nao é isso faz duas coisas disponibiliza o arquivo modelo, com dados de exemplo mostrando o resultado esperado e explica novamente.

 
Postado : 26/01/2016 11:05 am
(@mprudencio)
Posts: 0
New Member
 

Olhei a planilha e nao entendi pq vc nao usa formulas se elas ja estao la ...

Simples assim

Usa a macro pra deixar o arquivo no formato que deseja e calcula com a formula que ja esta la.

 
Postado : 26/01/2016 12:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Altere o trecho da macro conforme abaixo

Range("l4").Select

primeiro = Range("l4").Offset(0, -4).Address(RowAbsolute:=False)
segundo = [h4].End(xlDown).Address
Range("l4").Formula = "=" & primeiro & "/" & segundo

um = [M4].Offset(0, -1).Address(RowAbsolute:=False)
dois = [H1048576].End(xlUp).Address
Range("M4").Formula = "=" & um & "*" & dois

[n4] = "=RC[-6]+RC[-1]"

Codigo completo

Sub Rateio_teste()

Range("k1").Select
Selection.Offset(2, 0).Select
Selection.EntireRow.Insert
Selection.Offset(2, 0).Select
[k1048576].End(xlUp).Offset(1, 0).Select
Selection.EntireRow.Insert
Selection.Offset(0, -3).Select

Dim Inicio As Long
Dim Coluna As String
Dim Intervalo As String

'Obtem a coluna da célula ativa
Coluna = Left(ActiveCell.Address(1, 0), InStr(1, ActiveCell.Address(1, 0), "$") - 1)
    
'Verifica o inicio do intervalo a ser somado, a partir da célula ativa
Inicio = ActiveCell.Offset(-1, 0).End(xlUp).Row
    
'Monta o intervalo ... por exemplo, H1:H5
Intervalo = Coluna & Inicio & ":" & Coluna & ActiveCell.Row - 1
    
'Escreve a fórmula na célula ativa
ActiveCell.Formula = "=SuM(" & Intervalo & ")"

Selection.Offset(1, 0).Select
Selection.EntireRow.Insert

[H1048576].End(xlUp).Offset(1, 0).Select

Coluna = Left(ActiveCell.Address(1, 0), InStr(1, ActiveCell.Address(1, 0), "$") - 1)
    
'Verifica o inicio do intervalo a ser somado, a partir da célula ativa
Inicio = ActiveCell.Offset(-1, 0).End(xlUp).Row
    
'Monta o intervalo ... por exemplo, H1:H5
Intervalo = Coluna & Inicio & ":" & Coluna & ActiveCell.Row - 1
    
'Escreve a fórmula na célula ativa
ActiveCell.Formula = "=SuM(" & Intervalo & ")"

Columns("L:L").Select
Selection.ClearContents
Selection.Style = "Percent"


Range("l4").Select

primeiro = Range("l4").Offset(0, -4).Address(RowAbsolute:=False)
segundo = [h4].End(xlDown).Address
Range("l4").Formula = "=" & primeiro & "/" & segundo

um = [M4].Offset(0, -1).Address(RowAbsolute:=False)
dois = [H1048576].End(xlUp).Address
Range("M4").Formula = "=" & um & "*" & dois

[n4] = "=RC[-6]+RC[-1]"

Range("L4:N4").Select
Selection.Copy
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Range("A1:C1").Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Range("A1").Select
Columns("o:o").AutoFit

End Sub
 
Postado : 26/01/2016 1:47 pm
(@carlam)
Posts: 0
New Member
Topic starter
 

Muito obrigada meninos!! De coração, Reinaldo, era exatamente isso.

 
Postado : 26/01/2016 2:22 pm