【问题标题】:Get last row ignoring formula in google script获取最后一行忽略谷歌脚本中的公式
【发布时间】:2022-01-18 18:11:43
【问题描述】:

我使用了一个谷歌脚本,将行从一张纸移动到另一张纸,从 A 列到 D 列。在 E 列我有一个公式。如何将数据放在示例中从 A 列到 D 列的最后一行,忽略 E 列中的公式。有人可以帮我吗?

function onEdit(e){
  let r = e.range;
  if (r.columnStart != 4 || r.rowStart == 1 || e.value == null) return;
  const sh = SpreadsheetApp.getActive();
  const valArray = ["Waiting","In progress","Complete"];
  const destArray = ["Order","Open order","Complete order"];
  let dest = sh.getSheetByName(destArray[valArray.indexOf(e.value)]);
  let src = sh.getActiveSheet();
  if (dest.getName() == src.getName()) return;
  src.getRange(r.rowStart,1,1,4).moveTo(dest.getRange(dest.getLastRow()+1,1,1,4));
  src.deleteRow(r.rowStart);
}

这是我的问题的一个例子,也许这会更好地解释:https://docs.google.com/spreadsheets/d/1qowADCPYiyej25ezXtjVLO5fvg9Gr9rolX3bh2-ZAG4/edit#gid=0

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解How can i get last row from Column G from example, ignoring column W.。我可以问你目标的细节吗?
  • 嗨。这是我的问题的一个例子,也许这会更好地解释:docs.google.com/spreadsheets/d/…
  • 感谢您回复并提供示例电子表格。我不得不再次为我糟糕的英语水平道歉。不幸的是,当我看到您的示例电子表格时,我仍然无法理解您的问题。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。如果您能原谅我糟糕的英语水平,我将不胜感激。
  • 我的英语不太好。感谢您的关注和帮助。在我的示例中,我使用脚本将行从“订单”移动到“未结订单”或“完成订单”,具体取决于“状态”(在 D 列中)。例如,如果状态为“进行中”,则转到“未结订单”,如果状态为“已完成”,请转到“完成订单”,它工作正常,但如果我在 E 列或任何其他列中有公式列,它放在公式之后。在我的示例中,它移至“未结订单”,但在第 9 行而不是第 3 行,因为我在 E 列上有一个公式。
  • 我想将数据从 A 移动到 D 之后的最后一行,而不是公式之后的数据。我现在不知道我是否解释得很好,因为正如我所说,我的英语不太好。

标签: row formula move ignore


【解决方案1】:

dest.getLastRow() 替换为dest.getLastDataRow('A') 并添加此功能:

Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

我仍然建议你删除 E 列中的所有公式并放入 E1

={"price * 2";ARRAYFORMULA(if(C2:C>0;C2:C*2;""))}

这样公式将填充/将激活新行

【讨论】:

  • 您好,感谢您的想法。我试过了,但它不起作用。它创建一个新行并将数据移动到那里。如果我的工作表有 1000 行,则脚本创建一个新行并将数据放在 1001 处。
  • 好的,抱歉,我已经更新了答案
  • 非常感谢,您的解决方案似乎正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多