在Excel中,如何舍入到最近的斐波纳契数

时间:2011-06-28 15:47:27

标签: excel rounding worksheet-function fibonacci

在Excel中,我想舍入到最近的斐波那契数字。

我尝试了类似的东西(抱歉使用法语Excel):

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

其中FIBO是命名范围(0; 0,5; 1; 2; 3; 5; 8;等等)

我的问题是这个函数舍入到最小的数字而不是最近的数字。例如,12.8四舍五入为8而不是13。

注意:我只想使用excel公式,而不是VBA

3 个答案:

答案 0 :(得分:6)

这将有效:

=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)))

答案 1 :(得分:1)

定义目标编号Targ,相对于我们想要找到最接近的Fib编号。

定义

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

由此得出Fib(n)< = Targ< = Fib(n + 1)

其中可以通过

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

最后使用Fib(n)和Fin(n + 1)的计算值找到最接近Targ的Fib数。

不像其他解决方案那样紧凑,因为它需要一些辅助公式,但它不需要用于Fib数的表。

答案 2 :(得分:0)

我使用了一个更简单的嵌套IF解决方案。

我计算了每对斐波纳契数之间的中点,并将其用作决策点。以下测试A2中的值以产生所需的斐波那契数:

=IF(A2>=30,40,IF(A2>=16.5,20,IF(A2>=10.5,13,IF(A2>=6.5,8,IF(A2>=4,5,IF(A2>=2.5,3,IF(A2>=1.5,2,IF(A2>=0.5,1,0))))))))