Как сделать вывод массива столбцов, используя две функции рабочего листа в функции VBA? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть функция с двумя аргументами, x данными из вектора столбца и y данными из другого вектора столбца. Затем я хочу найти наклон и пересечение с помощью функций листа. Тем не менее, мне трудно форматировать вывод массива для двух ответов (наклон и перехват). Мой текущий код ниже. Я новичок в диапазонах и массивах, поэтому любая помощь будет оценена!

Function yCalc(xRange As Range, yRange As Range) As Variant

Dim X() As Double, Y() As Double, Z() As Double
Dim i As Integer, j As Integer, nr As Integer, nc As Integer, mr As Integer, mc As Integer
nr = xRange.Rows.Count
nc = xRange.Columns.Count
mr = yRange.Rows.Count
mc = yRange.Columns.Count

ReDim X(1 To nr, 1 To 1)
ReDim Y(1 To mr, 1 To 1)

ReDim Z(1 To nr, 1 To 1) As Double
For i = 1 To nr
Z(1, 1) = WorksheetFunction.Slope(Y, X)
Z(2, 1) = WorksheetFunction.Intercept(Y, X)
For j = 1 To nc
  Z(i, 1) = 0
Next j
Next i

yCalc = Z()
End Function

Вот аналогичный код, который я сделал в подпрограмме.

Sub ycalc2()

Dim i As Integer, n As Integer, m As Integer
Dim xRange As Range
Dim yRange As Range
Dim Slope As Double
Dim Intercept As Double

Set xRange = Application.InputBox("Select x Range!", "MP4 Q2", , , , , , 8)
n = xRange.Count
Set yRange = Application.InputBox("Select y Range!", "MP4 Q2", , , , , , 8)
m = yRange.Count

Slope = WorksheetFunction.Slope(yRange, xRange)
Intercept = WorksheetFunction.Intercept(yRange, xRange)

MsgBox ("Slope = " & Slope & Chr_13 & " Intercept = " & Intercept)
End Sub
...