Как трипаразировать значения ячеек, чтобы сформировать полиномиальное выражение?
EDIT: наиболее переработанный код, опубликованный ниже.
EDIT: я хочу, чтобы пользователь ввел полиномы, такие как: A(n) * X^n + A(n-1)*X^(n-1) + A(n-2)*X^(n-2) + ... + A (0)
У меня есть макрос Excel в процессе демонстрации теоремы о промежуточном значении. Пользователь вводит степень в A2, коэффициент в B2.
В настоящее время MsgBox может возвращать полином первого порядка в виде коэффициента * x^степени. Я хочу, чтобы MsgBox мог возвращать более сложные полиномы, чтобы пользователь мог подтвердить правильный полином был введен.
Вот код:
Sub Function1()
MsgBox "Enter polynomial by terms."
counter = 1
counter = counter + 1
Degree = Cells(counter, 1).Value 'A2
Coefficient = Cells(counter, 2).Value 'B2
' If cell value is null stop
If IsNull(Degree) = True Then
MsgBox "IsNull(Degree)=True"
End If
If IsNull(Coefficient) Then
MsgBox "IsNull(Coefficient)=True"
End If
If IsNumeric(Len(Trim(Degree))) = True And IsNumeric(Len(Trim(Coefficient))) Then
MsgBox "Degree is numeric"
If Degree Mod 1 = 0 Then
MsgBox "Degree is integer"
End If
End If
MsgBox Coefficient & "x^" & Degree
' How repeat this process to show in MsgBox entire polynomial?
End Sub
EDIT: пересмотренный код:
Option Explicit
Sub Function1()
Dim Polynomial As String
Dim Sign
Dim counter As Integer
Dim Degree
Dim Coefficient
While Cells(counter + 1, 1).Value <> "" And Cells(counter + 1, 2).Value <> "" '+1 because top row occupied by column A, column B titles. If cell is empty stop.
MsgBox "Enter polynomial by terms."
Degree = Cells(counter + 1, 1).Value 'A2
Coefficient = Cells(counter + 1, 2).Value 'B2
If (Coefficient < 0) Then Sign = " - " ' if coefficient negative
Else: If Coefficient > 0 Then Sign = " + " ' if coefficient positive
End If
Polynomial = Polynomial & " " & Coefficient & "x^" & Degree 'concatenation string, list polynomial.
counter = 1
counter = counter + 1
Wend
MsgBox poly
End Sub
1 ответ:
Вам нужно построить цикл вокруг того, что вы уже написали, и объединить
Coefficient & "x^" & Degree
внутри переменнойString
. Это может выглядеть так:Dim poly as String Dim sign as String ' Iterate over data cells: while Cells(counter,1).Value <> "" ' What you're already doing... ' ...plus: IIf(Coefficient < 0, sign = " - ", sign = " + ") ' String concatenation: poly = poly & " " & Coefficient & "x^" & Degree counter=counter+1 Wend ' Finally: Msgbox poly
EDIT: кроме того, если вы хотите проверить пустые значения, используйте
If Cells(counter,1).value = "" Then ...
.IsNull
используется для проверки пустоты объектов; простые типы данных инициализируются с помощью""
дляString
и0
для чисел и, таким образом, никогда не вызовутisNull
.