【问题标题】:I need to check a specific range to find the last cell that has values, then paste values on the next cell down我需要检查一个特定范围以找到最后一个具有值的单元格,然后将值粘贴到下一个单元格上
【发布时间】:2018-01-10 20:48:09
【问题描述】:

我正在寻求有关功能的帮助。我想检查一个特定的范围(F12:F34),找到该范围内有值的最后一个单元格,然后将另一组值(已经复制并等待)粘贴到下面的下一个单元格中。基本上这将全天填补这个范围。范围内的每一行都是工作现场的持续时间。 F 列是分配作业的停止时间。我可以用很多 IF 和 Else IF 来做到这一点,但我希望能写出更优雅(更短)的代码。希望这能解释我正在努力完成的工作。
这是表格的链接,可以查看它的外观:
https://docs.google.com/spreadsheets/d/188fYdI50uJ-3Qpy-GzP4l0xgoJlgm_QegWmVCgarU-Y/edit?usp=sharing

【问题讨论】:

  • 看起来您正在寻找有人为您编写脚本,但这与本网站的主题无关。请结帐How to Ask

标签: google-apps-script google-sheets


【解决方案1】:

您可以通过读取列中的所有值然后在单元格中循环查找空白来获取最后一行。如果你认为你可以在两者之间得到空白,那么你将以相反的顺序循环。即:for(var i=rangeValues.length-1;i>=0;i--)。好吧,您可能还会遇到电子表格的最后一行将填充一些数据的情况。在这种情况下,为了让程序继续运行,您可以插入一行,然后返回其位置。

function nextFreeRow(){
  var rangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('foo').getRange('F:F').getValues();
  for(var i=0;i<rangeValues.length;i++){
    if(rangeValues[i][0].toString() == "") return i+1;
  }
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('foo').insertRowAfter(rangeValues.length);
  return rangeValues.length+1;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多