У меня есть проблемы с листом Excel, которая содержит формулу:Формулы ошибки после сохранения файла из сети в локальные
=Spline($D$9:$D$34,$J$9:$J$34,$D43)
листа прекрасно работает, пока я не открыть этот лист на сетевом диске и сохраните его на локальном диске. Тогда эта формула выбрасывает #NAME? ошибка. Странно, что ошибка исчезла, когда я нажимаю на строку с формулой для ее редактирования и нажимаю Enter (ничего не изменяется в формуле).
Есть ли у кого-то подобная проблема?
Я только что нашел другую информацию. Формула spline
определена в модуле VBA, а не внутри Excel. Это выглядит как. Но вопрос все еще здесь.
Function spline(periodcol As Range, ratecol As Range, x As Range)
Dim period_count As Integer
Dim rate_count As Integer
period_count = periodcol.Rows.Count
rate_count = ratecol.Rows.Count
If period_count <> rate_count Then
spline = "Error: Range count does not match"
GoTo endnow
End If
ReDim xin(period_count) As Single
ReDim yin(period_count) As Single
Dim c As Integer
For c = 1 To period_count
xin(c) = periodcol(c)
yin(c) = ratecol(c)
Next c
Dim n As Integer
Dim i, k As Integer
Dim p, qn, sig, un As Single
ReDim u(period_count - 1) As Single
ReDim yt(period_count) As Single
n = period_count
yt(1) = 0
u(1) = 0
For i = 2 To n - 1
sig = (xin(i) - xin(i - 1))/(xin(i + 1) - xin(i - 1))
p = sig * yt(i - 1) + 2
yt(i) = (sig - 1)/p
u(i) = (yin(i + 1) - yin(i))/(xin(i + 1) - xin(i)) - (yin(i) - yin(i - 1))/(xin(i) - xin(i - 1))
u(i) = (6 * u(i)/(xin(i + 1) - xin(i - 1)) - sig * u(i - 1))/p
Next i
qn = 0
un = 0
yt(n) = (un - qn * u(n - 1))/(qn * yt(n - 1) + 1)
For k = n - 1 To 1 Step -1
yt(k) = yt(k) * yt(k + 1) + u(k)
Next k
Dim klo, khi As Integer
Dim h, b, a As Single
klo = 1
khi = n
Do
k = khi - klo
If xin(k) > x Then
khi = k
Else
klo = k
End If
k = khi - klo
Loop While k > 1
h = xin(khi) - xin(klo)
a = (xin(khi) - x)/h
b = (x - xin(klo))/h
y = a * yin(klo) + b * yin(khi) + ((a^3 - a) * yt(klo) + (b^3 - b) * yt(khi)) * (h^2)/6
spline = y
endnow:
End Function
Каков код для UDF? – pnuts
В этот момент нет UDF, всего несколько формул. Я буду рад, если я смогу решить это без VBA. –
вы можете попытаться сделать из него матрично-формулярную. нажмите 'ctrl-shift-enter' вместо' enter', когда вы ввели формулу – psychicebola