在目标工作表中使用import Range时保留关联的行数据 [英] Preserve associated row data while using importRange in the destination sheet

查看:16
本文介绍了在目标工作表中使用import Range时保留关联的行数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于我们的建筑公司,我们有一张表,其中列出了所有的账单,以及我们的会计人员将添加到master sheet中的相关数据。

然后,我有另一个工作表,为帐户中的相关人员提取此数据,以便他们完成这些步骤。它使用QUERY和IMPORT Range仅筛选出相关列(具体而言,基于H列-是&Quot;或&Quot;否&Quot;)。

query(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1pY53-XaGnUQ3BPmLh90mLSqIwSo7S2_QOPbD6JBQHOA/edit#gid=0","Master!A3:G"), "Select Col1, Col2, Col4, Col5, Col6, Col7 where Col6 is not null")

我想在destination sheet中包含一些详细信息,我已经这样做了。

问题通常与主表中的H列相关(是否需要完成工作)。在大多数情况下,答案要么是肯定的,要么是否定的。然而,在某些情况下,会计人员不能确定这是肯定的还是否定的。但他想继续添加其他账单细节。

当他稍后填充空列时,此第二张工作表上输入的数据不会随导入的数据动态移动,从而导致行未对齐。

不幸的是,正如我前面提到的,行没有粘在一起,因此随着导入列的动态顺序更改,手动列的静电顺序会导致不匹配。

有没有办法实现这一点?

推荐答案

解决方案是添加onEdit触发器,以检查H列是否有任何更改,然后将相应的行添加到目标工作表,如下所示:

function onEdit(e) {
  let destinationSheet = SpreadsheetApp.openById("SS_ID").getSheetByName('Input Sheet');
  let sourceSheet = SpreadsheetApp.getActiveSheet();
  let lastRow = destinationSheet.getLastRow();
  if (e.range.getColumn() == 8 && e.range.getValue() != null) {
    let billNo = sourceSheet.getRange(e.range.getRow(),1).getValue();
    // retrieve all the other values needed from the current row of the edit
    // current row of the edit > e.range.getRow()
    destinationSheet.getRange(lastRow+1,1).setValue(billNo);
    // copying the values to the destination sheet by using setValue()

  } 
}
上面的代码使用e事件对象来检查H列中是否进行了编辑,以及值是否与null不同。如果此条件成立,则正在检索需要复制的值(这里我已经说明了如何检索billNo),然后通过检索目标工作表的最后一行在目标工作表中设置它们。

注意:

您还可以添加for循环,以便更轻松地管理数据复制,还可以添加更多条件,以便在某个Actual Date之后粘贴新条目,或者只需在粘贴条目后对值进行排序。

参考

这篇关于在目标工作表中使用import Range时保留关联的行数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆