"IF" excel 中算法的公式

"IF" Formula for an algorithm in excel

我有这个 table:

Queue¦  Room 1¦ Room 2¦  Room 3¦    Room 4¦ Room 5¦     Room 6¦ 
1    ¦    1   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
2    ¦    2   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
3    ¦    3   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
4    ¦    4   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
5    ¦    5   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
6    ¦    6   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
7    ¦    7   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
8    ¦    8   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
9    ¦    9   ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
10   ¦    10  ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
11   ¦    11  ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
12   ¦    12  ¦    0  ¦    0   ¦    0     ¦    0  ¦    0
13   ¦    12  ¦    1  ¦    0   ¦    0     ¦    0  ¦    0
14   ¦    12  ¦    2  ¦    0   ¦    0     ¦    0  ¦    0
15   ¦    12  ¦    3  ¦    0   ¦    0     ¦    0  ¦    0
...  ¦    ..  ¦    .. ¦    ..  ¦    0     ¦    0  ¦    0
36   ¦    12  ¦    12 ¦    1   ¦    0     ¦    0  ¦    0
37   ¦    12  ¦    12 ¦    2   ¦    0     ¦    0  ¦    0
38   ¦    12  ¦    12 ¦    3   ¦    0     ¦    0  ¦    0
...  ¦    ..  ¦    .. ¦    ..  ¦    ..    ¦   ..  ¦   ..
80   ¦    12  ¦    12 ¦    12  ¦    1     ¦    0  ¦    0
81   ¦    12  ¦    12 ¦    12  ¦    2     ¦    0  ¦    0
82   ¦    12  ¦    12 ¦    12  ¦    3     ¦    0  ¦    0
83   ¦    12  ¦    12 ¦    12  ¦    4     ¦    0  ¦    0
84   ¦    12  ¦    12 ¦    12  ¦    5     ¦    0  ¦    0
85   ¦    12  ¦    12 ¦    12  ¦    6     ¦    0  ¦    0
...  ¦    ..  ¦    .. ¦    ..  ¦    7     ¦    0  ¦    0

为了提供一些背景知识,我试图创建一个本质上可以查看 "Queue" 列的公式,并将它们放在 "Queue" 到 "Room 1" 中,并继续将它们放在 "Room 1" 直到它满了(当它达到 12 时就满了)然后我希望它把那些放在 "Queue" 到 "Room 2" 中,所以当它达到 13 时(在 Queue列),然后它们被放置在 "Room 2",直到它再次在 12 个位置满,推进到 "Room 3" 等等。

我是 excel 的新手,我不确定我的做法是否正确。我到目前为止的公式:

=OFFSET(A2, 0, $A)

这基本上会查看 "Queue",然后 returns 它正在查看的单元格旁边的数字。我可以用这个公式从 "Room 3" 开始填充字段,但我想知道是否有更好的方法来做到这一点?我也在考虑使用 IFstatement,但我不确定如何增加 IFstatement,如下所示:

=IF(a13=12,"1","0")

但是我如何递增“1”使其成为“2”,然后在公式中使其成为“3”,直到它再次达到 12 并从下一行开始?

在同一列中的 12 之后,我希望它下面的行也显示 12。

如果我让任何人感到困惑,我深表歉意,但我发现在线搜索帮助很棘手,因为我不知道如何描述我正在寻找的公式。

另外:我的查询是否有更好的标题来帮助其他人解决与我类似的挑战,找到这个问题?

这行得通 - B 列将自身与 a 列进行比较,如果它大于或等于 12,则它 returns 12,否则,它 returns A 中的数字。 C 列检查 B 是否小于 A 以及 returns A - B 的余数,如果结果大于或等于 12,则检查 12...D 列执行相同操作。

B 列

=IF(a13<=12,a13,12)

C 列

=IF(IF(B13<A13,A13-B13)<=12,IF(B13<A13,A13-B13),12)

D 列

=IF((B13+C13)<=A13,+A13-B13-C13,12)

将该公式粘贴到 B1 中并向下和向右拖动。 它是一种数学方法,应该允许您尽可能地拖动:

=IF(IF($A2-12*(COLUMN()-2)>12,12,$A2-12*(COLUMN()-2))<0,0,IF($A2-12*(COLUMN()-2)>12,12,$A2-12*(COLUMN()-2)))

鉴于 A 列已填充,这适用于所有其他列:

=IF(ROW()=2;0;IF(OR(A2<>12;A1<>12);0;IF(B1=12;12;B1+1)))

解释:

'If you are in the first row, for all but Column A it is 0
=IF(ROW()=2;0;
'If stays zero, until the second 12 appears in column A -> meaning overflow
 IF(OR(A2<>12;A1<>12);0;
 'If the value in the same column above is already 12 it also becomes 12
 IF(B1=12;12;
 'only except all the above cases, does the value increment by 1
 B1+1)))