将日期和数值从一个表填充到另一个表中

时间:2018-04-26 02:36:29

标签: excel google-apps-script google-sheets

下面是一个简单的列表,列出了我要完成的更长的列表。

假设我有10个日期的供应预测和来自的数量和我有A1到C10列的项目列表

Date .   Qty
5/7/2018 80
6/3/2018 100
7/9/2018 100
.....

Project . Qty Required . Qty Left     
1         10             50
2         20             30
3         50             -20 
4         20             -40
5 .       50             -90
....

我想填充两个额外的列:供应日期,供应数量已添加。所以我的桌子最好是这样的。

Project . Qty Required . Qty Left  Supply Date .  Supply Qty Added 
1         10             50
2         20             30
3         50             60       5/7/2018        80
4         20             40
5         50             90       6/3/2018       100

如果有超过100个项目和更多供应日期,那么进行此练习将会有点过于手动。

我有第一个日期和数量的公式(如果项目行x需要数量是<项目行x-1中的剩余数量),然后将供应日期和供应数量添加。

但我的麻烦是添加额外的公式,如果项目行x的所需数量是>数量在项目行x-1中左侧,然后不做任何事情(或放入'')。但是,如果公式(如果项目行x的所需数量为<项目行x-1中的数量)为真,则使用第二个供应日期6/3/2018。

我希望我的逻辑类似于Python,你启动一个变量(例如row = 0),然后在第一次出现时+1,这样它就知道抓住下一行值。

有没有办法在googlesheets中执行此操作,还是我必须利用Appscripts进行此类练习?

1 个答案:

答案 0 :(得分:1)

这可以在没有脚本的情况下完成。

执行此操作的一种方法是计算当前行上方的非空白单元格的当前数量,以决定选择哪个日期和数量。完整的公式看起来像这样:

=IF($B2>$C1,INDIRECT("Sheet1!A"&COUNTA(INDIRECT("D2:D"&MAX(2,ROW()-1)))-COUNTBLANK(INDIRECT("D2:D"&MAX(2,ROW()-1)))+1),"")

分解为步骤:

  1. If($B2>$C1检查项目行x所需的数量是否为>数量留在项目行x-1中。

  2. INDIRECT("Sheet1!A"...这是间接引用包含我们想要提取的日期和数量的工作表。我们知道它来自A栏,我们只需要确定哪一行是"当前"要从

  3. 拉出来的行
  4. COUNTA(INDIRECT("D2:D"&MAX(2,ROW()-1)))-COUNTBLANK(INDIRECT("D2:D"&MAX(2,ROW()-1)))+1)计算当前行上方的空白单元格数。使用此方法来计算具有公式的单元格。

  5. MAX(2,ROW()-1)因为我们在第2行开始公式,所以我们只想检查空白单元格到第2行。

  6. 查看this test sheet