"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)))
我有这个 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)))