Notifications
Clear all

Excel repete valores da fórmula da macro

3 Posts
3 Usuários
0 Reactions
689 Visualizações
(@carmone)
Posts: 1
New Member
Topic starter
 

Pessoal,

Estou com o seguinte problema:

Criei uma macro (código abaixo) para resolver um fórmula com x e y distintos. Quando testei a macro pela primeira vez ela retornou a resposta correta da equação.
O problema é quando copio a fórmula e jogo em outras células, os resultados ficam todos iguais. Além disso quando clico ou aperto F2 o valor mudar, mas se eu faço isso outra vez o valor muda novamente.

Alguém tem alguma idéia do que pode estar acontecendo?

Meu excel está com cálculo automático. Mandei o arquivo como anexo.

Function equacao1()

Dim x1 As Double
Dim y1 As Double

x1 = Cells(1, ActiveCell.Column)
y1 = Cells(ActiveCell.Row, 1)

equacao1 = (1 + (2.8 * x1) + (0.65 * y1))

End Function

 
Postado : 14/11/2013 2:14 pm
edilsonfl
(@edilsonfl)
Posts: 227
Estimable Member
 

Olá Carmone,

Não seria mais prático usar = (1 + (2,8 * B$1) + (0,65 * $A2)) na célula B2 e arrastar para outras células.

Quando ajuda for útil dê um clique na mãozinha, isso atribui ponto ao colaborador.

 
Postado : 14/11/2013 11:08 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Com relação a sua função:
O valor de X e Y são passados pela célula e coluna ativos; então todas a linhas/colunas em que for referenciada a função, receberão os mesmos valores da célula ativa; ou seja um único valor para qualquer local onde a função estiver.
Para esse tipo de função é necessário passar as "coordenadas" para cada posição onde for referenciada; mesmo procedimento utilizado na programação do Excel.
Exemplo:= Soma(A2:B2)
Voçe pode utilizar (Sintaxe--> equal(A2;B1); equal(A2;C1)....)

Function Equal(rRef As Range, cRef As Range) As Double
Application.Volatile

Equal = (1 + (2.8 * cRef.Value) + (0.65 * rRef.Value))

End Function

.
ou
Sintaxe--> equa0(lin();col()

Function Equa0(Lin As Integer, Col As Integer) As Double
Application.Volatile

Equa0 = (1 + (2.8 * Cells(Lin, 1).Value) + (0.65 * Cells(1, Col).Value))

End Function

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

 
Postado : 15/11/2013 7:30 am