在Excel中,如何四舍五入到最接近的斐波那契数

问题描述 投票:0回答:4

在 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

excel rounding worksheet-function fibonacci
4个回答
8
投票

这会起作用:

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

2
投票

定义目标数 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 数表。


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

0
投票

也许比嵌套 IF 方法(这是我最喜欢的)更简单:

=IF(T5>13,21,IF(T5>8,13,IF(T5>5,8,IF(T5>3,5,IF(T5>2,3,IF(T5>1,2,如果(T5>=0.5,1,0))))))

(T5 是我的单元格参考,而不是本示例中的 A2)

© www.soinside.com 2019 - 2024. All rights reserved.