2015-08-05 4 views
0

У меня есть проблемы с листом 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 
+0

Каков код для UDF? – pnuts

+0

В этот момент нет UDF, всего несколько формул. Я буду рад, если я смогу решить это без VBA. –

+0

вы можете попытаться сделать из него матрично-формулярную. нажмите 'ctrl-shift-enter' вместо' enter', когда вы ввели формулу – psychicebola

ответ

0

Попробуйте добавить:

Application.Volatile

в код VBA. Добавьте это чуть ниже выражения Function, чтобы принудительно обновить расчет, как только все изменится.

Смежные вопросы