Excel中的双重条件斐波那契数列

时间:2018-06-24 19:57:06

标签: excel

我正在尝试创建一个斐波那契数列,其增量取决于一列,而重新启动取决于另一列。

鉴于A和B列,我想计算FIB:

 A | B |FIB
---|---|---
 1 | T | 0    // A=1, B=T -> FIB=0
 2 | T | 1    // A!=1, B=T -> FIB=1
 0 | F |      // B=F -> Do Nothing
 2 | T | 1    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=1
 2 | T | 2    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=2
 0 | T | 3    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=3
 2 | F |      // B=F -> Do Nothing
 1 | F |      // B=F -> Do Nothing
 2 | T | 5    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=5
 0 | F |      // B=F -> Do Nothing
 1 | T | 0    // A=1, B=T -> Restart -> FIB=0
 2 | T | 1    // A!=1, B=T -> FIB=1
 0 | F |      // B=F -> Do Nothing
 0 | T | 1    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=1
 2 | T | 2    // A!=1, B=T -> FIB=FIB(-1)+FIB(-2)=2

A=1时,我希望FIB重新启动斐波那契数列。

B=T时,我希望FIB递增。

在没有VB的情况下,您看到任何方法吗?

-编辑#1:我的尝试-

我没有添加尝试,因为它们相差很远,但是在这里:

FIB =IF(B, IF(A=1,0,FIB[-1] + FIB[-2]))

这不起作用,因为增量没有考虑到以前的单元格可能为空或可能是重新启动。

1 个答案:

答案 0 :(得分:1)

这是一个解决方案,借助一些辅助列

在单元格G2

=IF($B2="T",IF($A2=1,0,IF($B1="T",-1,$G1)),$G1-1)

在单元格H2

=INDEX($G:$G,ROW()+$G2)+$G2

在单元格I2

=INDEX($C:$C,ROW()+$G2)

在单元格J2

=INDEX($C:$C,ROW()+$H2)

在FIB单元中,C2

=IF(B5="T",IF(A5=1,0,IF($I5=0,1,$I5+$J5)),"")

并根据需要向下复制

enter image description here