none
Igualando dados em equação por VB [Resolvido] RRS feed

  • 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 na ColB uma função aplicada a ColA, na ColC existe apenas uma validação que procura o menor valor absoluto entre ColA e ColB. Retornando o valor da ColA como resposta.

    Na figura usei X=1 depois passando para X=15, apenas para acelerar o processo, mas utilizo em si X=0.1, para que o erro seja menor que 0.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ó retorna X=0


    • Editado A_Nunes quinta-feira, 22 de outubro de 2015 12:26 Resolvido
    quarta-feira, 21 de outubro de 2015 15:28

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.

    quinta-feira, 22 de outubro de 2015 12:25

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

    quarta-feira, 21 de outubro de 2015 18:54
  • 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.

    quinta-feira, 22 de outubro de 2015 12:25