В 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).
не так компактно, как другое представленное решение, поскольку для него требуется несколько вспомогательных формул, но для этого требуется нет таблицы для чисел Фибоначчи.