【问题标题】:Copy row by row if value of cell is correct (by using Google Script)如果单元格的值正确,则逐行复制(使用 Google 脚本)
【发布时间】:2017-07-28 10:16:38
【问题描述】:

我正在尝试创建一个 Google 脚本,该脚本将行从一个 Google 表格复制到同一张表格中,但根据单元格的值复制到不同的列中。 示例如下:

    A    B   C   D   E   F 

1|约翰 12 开放

2|尼克 31 关闭

3|萨拉 12 开放

4| Dany 32 关闭

..n|尼克221打开

如果 C 列中的单元格“关闭”,我需要将 A、B、C 列复制到 D、E、F。如果 C 列中的单元格是“打开”的,请忽略这一点,不要将 A、B、C 复制到 D、E、F。我知道,我可以使用普通函数“if”,但我需要使用谷歌脚本,因为我需要在 D、E、F 列中的纯文本或值(无公式)。提前感谢您的帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow!您的问题仅包含要求 - 它没有显示您自己为解决此问题所做的任何努力。请在此问题中添加您的尝试 - 因为该站点不是免费的“我们为您服务”服务。除此之外:请看How to ask a good question

标签: google-apps-script google-sheets


【解决方案1】:

好的,我删除了全局设置值,并在关闭时仅更新列 D、E、F 替换。它会运行得慢一点,但它不应该与公式混淆。

function copyIfClosed()
{
  var ss=SpreadsheetApp.getActive();
  var sht=ss.getSheetByName('example');
  var lastRow=sht.getLastRow();
  var rng=sht.getRange(1,1,lastRow,6);
  var rngA=rng.getValues();
  for(var i=0;i<rngA.length;i++)
  {
    if(rngA[i][2]=='closed')
    {
      sht.getRange(i+1,4).setValue(rngA[i][0]);
      sht.getRange(i+1,5).setValue(rngA[i][1]);
      sht.getRange(i+1,6).setValue(rngA[i][2]);
    }
  }
  SpreadsheetApp.flush();
}

希望这会有所帮助。

这是我的工作表的样子:

【讨论】:

  • :) 它工作得几乎完美。在上面的示例中,如果我在 D1 中有某些功能,则在运行脚本后会覆盖 D3 或 D5 字段。例如,如果我在 D3 函数“=B3+H3”后运行脚本字段将被清除 :( 如何更改它,该字段将不会被 ovwerwriten?
  • 应对字段如果“关闭”工作正常但如果是“打开”列 D、E、F 中的数据/函数被清除:( 谢谢您的帮助
  • 对不起,数据没有被清除但是函数(被覆盖)
  • 好吧做了个改动,这样我打开的时候就不会弄乱d,e,f的内容了。
  • 库珀,非常感谢!现在一切正常。问题解决了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多