【问题标题】:"IF" Formula for an algorithm in excelexcel中算法的“IF”公式
【发布时间】:2018-09-08 14:00:52
【问题描述】:

我有这张桌子:

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

为了提供一些背景知识,我正在尝试创建一个公式,它可以查看“队列”列并将“队列”中的那些放置到“房间 1”,并继续将它们放在“房间 1”直到它满了(当它到达 12 时它已满)然后我希望它把那些在“队列”中的那些放在“房间 2”,所以当它达到 13 时(在队列列中),然后它们被放置在“房间 2”中,直到它再次在 12 个位置满员,继续推进到“3 号房间”,依此类推。

我是 excel 新手,我不确定我是否以正确的方式进行。我到目前为止的公式:

=OFFSET(A2, 0, $A$2)

这基本上是查看“队列”,然后返回它正在查看的单元格旁边的数字。我可以用这个公式从“房间 3”开始填充字段,但我想知道是否有更好的方法来做到这一点?我也在考虑使用 IF 语句,但我不确定如何增加 IF 语句,如下所示:

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

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

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

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

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

【问题讨论】:

  • 队列列中的值是否总是数字,还是人名?
  • @DarrenBartrup-Cook 队列列将始终为数字..

标签: excel if-statement excel-formula offset excel-2016


【解决方案1】:

这行得通 - 列 B 将自身与列 a 进行比较,如果大于或等于 12,则返回 12,否则返回 A 中的数字。 C 列检查 B 是否低于 A,如果结果大于或等于 12,则返回 A - B 的余数或 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)

【讨论】:

  • 您好,谢谢您,这种帮助,但我需要为接下来的 25 列复制这个,所以在这个例子中,房间 4、5 和 6 也需要公式。我假设所有专栏都没有一个论坛?意味着所有内容都是对特定回报的每一列的手动编辑?
  • 那么你只需重复将左侧列的总数与A列中的总数进行比较的原则。您应该可以将'B13 + C13'替换为SUM($ B13:C13) ,这样,您就可以将公式拖过(与“else”部分相同)。
  • hm,好的,谢谢,刚刚查看了前 3 列,对于 D 列它不会停留在 12 之后,我将公式调整为 =IF(SUM(B77+C77)
  • 你的 'else' 设置为 25,所以它会上升到 25
【解决方案2】:

将该公式粘贴到 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)))

【讨论】:

  • 感谢您,我不确定 IF 语句是否正确,但感谢您澄清它!我还把标题改成了“如果”,让其他想要找到类似东西的人说
【解决方案3】:

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

【讨论】:

  • 嗨@FloLie,谢谢你,但是当我试图在我的电子表格中复制这个公式时,公式中似乎缺少一些东西。下面的数学方法似乎也有效。再次非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多