Usuário com melhor resposta
Igualando dados em equação por VB [Resolvido]

Pergunta
-
Preciso programar minha macro para encontrar todos dados iguais ou semelhantes. Construí no excel uma planilha com três colunas, na
ColA
números de start, e naColB
uma função aplicada aColA
, naColC
existe apenas uma validação que procura o menor valor absoluto entreColA e ColB
. Retornando o valor daColA
como resposta.Na figura usei
X=1
depois passando paraX=15
, apenas para acelerar o processo, mas utilizo em siX=0.1
, para que o erro seja menor que0.5
Tentei usar o código abaixo, mas não obtive exito:
Sub Botão1_Clique() Dim X0 As Double, X As Double, ctr As Double ctr = X0 - X For X = 0.1 To ctr < 0.5 Step 0.1 X = X0 - (12 * 0.094) / ((0.000001245 * (X ^ 1.75)) + 0) Next X MsgBox X End Sub
O código deveria retornar
X=141
, mas só retornaX=0
- Editado A_Nunes quinta-feira, 22 de outubro de 2015 12:26 Resolvido
Respostas
-
Obrigado Edcronos, mais acabei de conseguir o que queria com o seguinte código:
Public Function FX() As Double Dim L2, LR As Integer LR = 2 L2 = 1 While L2 < LR L2 = L2 + 1 LR = (12* 0.094) / (1.245e-6 * Math.Pow(L2, 1.75) + 0)) End While FX = LR MessageBox.Show(FX) End Function
Estou alterando o post como resolvido.
- Sugerido como Resposta André Santo quinta-feira, 22 de outubro de 2015 12:30
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 22 de outubro de 2015 13:35
Todas as Respostas
-
alguns pontos importantes
ctr = X0 - X
X0 é zero e X tbm é zero, portando resultado vai ser zero
For X = 0.1 To ctr < 0.5 Step 0.1
Qual seria o papel de "ctr" nessa parte?
o for next vai contar de 0.1 até 0.5 somando 0.1 ao valor de X
isso dá no total 5 ciclos, 0.1,0.2,0.3,0.4 e 0.5
X = X0 - (12 * 0.094) / ((0.000001245 * (X ^ 1.75)) + 0)
o que é icrementado pelo laço FOR next está recebendo valores
e se o laço está programado para parar em 0.5 nunca vai passar disso
sem falar em X0 que é zero e tem valores subtraidos, portando vai ficar negativo
mas bem, como sou pessimo em matematica e não tenho a menor ideia do que vc qeur fazer só posso falar os erros de logica
-
Obrigado Edcronos, mais acabei de conseguir o que queria com o seguinte código:
Public Function FX() As Double Dim L2, LR As Integer LR = 2 L2 = 1 While L2 < LR L2 = L2 + 1 LR = (12* 0.094) / (1.245e-6 * Math.Pow(L2, 1.75) + 0)) End While FX = LR MessageBox.Show(FX) End Function
Estou alterando o post como resolvido.
- Sugerido como Resposta André Santo quinta-feira, 22 de outubro de 2015 12:30
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 22 de outubro de 2015 13:35