Как написать уравнение в VBA - PullRequest
3 голосов
/ 23 октября 2019

Я новичок в VBA, и я застрял на том, как ввести следующее уравнение в VBA, чтобы ячейка A1 могла изменить значение X. X = 0,5
Equation

Здесьмой код в VBA:

Sub Equation()

Dim x As Double
x = Range("A1").Value
Answer = Sqr(1 + x ^ 2) & (1 + (1) / Sqr(1 + x ^ 2))

MsgBox ("The Answer to the equation is " & Answer)
End Sub

Ответы [ 4 ]

1 голос
/ 23 октября 2019

а) Чтобы ввести математическую формулу, вам нужно знать синтаксис:

  • Чтобы получить квадратный корень, используйте Sqr (вы уже сделали)
  • Мощностьфункция выполняется с помощью символа ^ (каретки)
  • Нет константы построения e, вы можете определить ее либо путем определения константы, либо с помощью Exp(1)

b) Если вы хотите использовать свое уравнение, доступное в Excel, создайте UDF (определяемая пользователем функция).

Посмотрите на следующий фрагмент кода. Мне нравится разбивать сложные операторы на части, поэтому я использовал 2 промежуточные переменные.

Если ваш x находится в A1, вы можете, например, записать формулу =Equation(A1) в ячейку B1.

Public Function Equation(x As Double) As Double    
    Dim term1 As Double, term2 As Double, answer As Double
    term1 = Sqr(1 + x ^ 2)
    term2 = 1 + (1 / term1)
    Equation = x * (Exp(1) ^ term1) * term2
End Function
1 голос
/ 23 октября 2019

Вы можете вставить модуль в свой проект VBA:

enter image description here

напишите ниже функцию там:

Function func(x As Double) As Double
    Dim result As Double

    result = x * Exp(Sqr(1 + x * x))
    result = result * (1 + 1 / (Sqr(1 + x * x)))
    func = result
End Function

И затемиспользуйте его в рабочей таблице, например: =func(A1)

ПРИМЕЧАНИЕ : ^ оператор не работает везде

1 голос
/ 23 октября 2019

Если вы хотите, чтобы это была действительная функция, сделайте это (у @sam есть уравнение для вас).

Function Equation(x as Double) as Double

Dim e = As Double 

e = 2.7182818284

Equation = (x * e ^ Sqr(1 + x ^ 2)) * (1 + 1 / Sqr(1 + x ^ 2))

End Function

Теперь в B1 вы можете сделать =Equation(A1)

1 голос
/ 23 октября 2019

Вам не хватает нескольких частей вашего выражения. Во-первых, e не определено, и это также не является частью вашего выражения. Посмотрите на это:

e = 2.7182818284
Answer = (x * e ^ Sqr(1 + x ^ 2)) * (1 + 1 / Sqr(1 + x ^ 2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...