В Excel, как округлить до ближайшего числа Фибоначчи

в Excel, я хотел бы округлить до ближайшего числа Фибоначчи.

я попробовал что-то вроде (извините с французским Excel):

RECHERCHEH(C7;FIBO;1;VRAI) -- HLOOKUP(C7, FIBO, 1, TRUE)

где FIBO-именованный диапазон (0; 0,5; 1;2;3;5;8;etc.)

моя проблема в том, что эта функция округляется до наименьшего числа, а не до ближайшего. Например 12.8 округляется до 8, а не 13.

Примечание: я просто хочу использовать формулу excel, и нет VBA

2 ответов


Это будет работать:

=INDEX(FIBO,1, IF(C7>=(INDEX(FIBO,1,(MATCH(C7,FIBO,1)))+
    INDEX(FIBO,1,(MATCH(C7,FIBO,1)+1)))/2, MATCH(C7,FIBO,1)+1, MATCH(C7,FIBO,1)))

определите целевой номер Targ, относительно которого мы хотим найти ближайший номер Fib.

определение

n = INT(LN(Targ*SQRT(5))/LN((1+SQRT(5))/2))

из этого следует, что Fib(n)

где можно вычислить Fib(n) и Fib (n+1) через

Fib(n) = ROUND(((1+SQRT(5))/2)^n/SQRT(5),0)

наконец, найдите ближайшее число Fib к Targ, используя вычисленные значения Fib(n) и Fin (n+1).

не так компактно, как другое представленное решение, поскольку для него требуется несколько вспомогательных формул, но для этого требуется нет таблицы для чисел Фибоначчи.