填充单元格,直到达到目标或没有剩余数量

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

抱歉,标题相当模糊,因为很难用简短的句子概括问题。

这是具有所需输出的输入示例:

流量 2024 年 4 月 ------------
传入 100
传出1 23.2
外出2 10
余数 66.8
------------ -------- ------------
姓名 目标 实际 预计
------------ -------- ------------ ----------
样品1 100 99 100
样品2 100 110 110
样品3 80 80 80
样品4 10 0 10
样品5 10 0 10
样品6 10 0 10
样品7 100 101 101
样品8 100 92.2 100
样品9 62.8 63 63
样品10 10 10 10
样品11 10 9 10
样品12 5 5 5
样品13 136.12 163.12

在这个例子中。 “剩余”将填充“预计”中的帐户,直到达到目标(获取与实际的差额)。 (请注意,如果实际值大于目标值,则不会发生任何情况)。 然后它会继续向下填充,直到“剩余”被耗尽。

在此示例中,余数为 66.8。 这意味着以下内容将添加到“实际”之上的每个“预计”中:

  • 样品1:1个
  • 样本2:0
  • 样本3:0
  • 样品4:10个
  • 样品5:10个
  • 样品6:10个
  • 样本7:0
  • 样本8:7.8
  • 样本9:0
  • 样本10:0
  • 样本11:1
  • 样本12:0
  • 样本13:27
  • 总计:66.8

最终的“样本13”,将取最后的余数,没有目标。

这是另一个例子,如果余数是一个小数字,无法填满所有帐户:

流量 2024 年 4 月 ------------
传入 100
传出1 23.2
外出2 75.8
余数 1
------------ ---------- ------------
姓名 目标 实际 预计
------------ ---------- ------------ ----------
样品1 100 99 100
样品2 100 110 110
样品3 80 80 80
样品4 10 0 0
样品5 10 0 0
样品6 10 0 0
样品7 100 101 101
样品8 100 92.2 92.2
样品9 62.8 63 63
样品10 10 10 10
样品11 10 9 9
样品12 5 5 5
样品13 余数 136.12 136.12

“样本”的数量可能会增加或减少

我做了一个EXAMPLE_SHEET,这样可能更容易理解

google-sheets
1个回答
0
投票

这是您可以测试的一种方法:

=choosecols(scan({0,0},L8:index(L:L,match(,0/(L:L="Remainder"))),lambda(a,c,let(Σ,offset(c,,1),Λ,if(+a<>"",+a+if(c-Σ>0,c-Σ,),),
  if(and(c="Remainder",+a<>""),{"",Σ+M5-+a},
  if(isbetween(M5,+a,Λ),{"",Σ+M5-+a},
  if(+a<M5,{Λ,max(c,Σ)},{"",Σ})))))),2)

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