当前位置: 首页 > 知识库问答 >
问题:

将行内容移动到Google工作表中的下一个打开的行

蒙麒
2023-03-14

我有两个工作表,我将经常在它们之间移动数据。在Sheet1上,我有我所有的数据,复选框用于将相同的数据发送到Sheet2。当数据发送过来时,会留下空行,这样我就知道在一天结束时重建工作表时有哪些位置可用。

Sheet2上的数据将被修改,在一天结束时,我想将所有内容移回Sheet1,以获得第一个可用的空行。我的第一部分工作正常,但我似乎无法将数据移回Sheet1中的第一个可用单元格(空单元格)。

当前的问题是,当我取消选中该框以将行的值设置为false时,数据将从Sheet2中删除,但不会移动到Sheet1中。

这是我到目前为止所拥有的:

functhtml" target="_blank">ion onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Foss Test 2" && r.getColumn() == 4 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Foss Test");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
} else if(s.getName() == "Foss Test" && r.getColumn() == 4 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Foss Test 2");
var target = targetSheet.getRange(targetSheet.getDataRange().getHeight() + 1, 1)
targetSheet.appendRow(target.getValues()[0]);
s.deleteRow(row);
}
}

我觉得我的错误在ore块中,因为目前没有数据被移回Sheet1。

共有1个答案

陈增
2023-03-14

虽然您没有定义“源”一词,但我想这就是您想要的。

function onEdit(e) {
  e.source.toast('flag0');
  var sh=e.range.getSheet();
  if(sh.getName()=="Sheet1" && e.range.columnStart==4 && e.value=="TRUE") {
    var targetSheet=e.source.getSheetByName("Sheet2");
    var target=targetSheet.getRange(targetSheet.getLastRow() + 1,1);
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).moveTo(target);
  } else if(sh.getName()=="Sheet2" && e.range.columnStart==4 && e.value=="FALSE") {
    var targetSheet=e.source.getSheetByName("Sheet1");
    var vA=targetSheet.getDataRange().getValues();
    for(var i=0;i<vA.length;i++) {
      if(vA[i].join('').length==0) {
        var target=targetSheet.getRange(i+1,1);
        sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).moveTo(target);
        break;
      }
    }   
  }
}

如果这不是你想要的,请让我知道。

 类似资料:
  • 我有一个脚本,当数据被添加到列“我”时,它将数据从一个工作表移动到另一个工作表。 我想调整脚本,以执行将所有行(值)从未支付的工作表(其中列I不是空的)通过按钮按钮移动到已支付的工作表,而不是在编辑时。这将允许一次从多行移动数据,而不是使用一次只移动一行的当前脚本。 有人能帮忙吗? 附带说明,脚本的“如果”部分旨在将代码移回原始工作表。这是不需要的,但我无法删除这部分代码并保持功能。

  • 我最近开始在GoogleSheets中做一些工作,以前我可以在Excel中编写函数,但我无法在GoogleSheets脚本中实现这一点。 我有两张床单 第1页。单元格A1-E5包含基于某些选择标准表2的值。登记表 我需要的是在执行脚本时(通过绘图和链接宏) 我需要它来复制A1:E1范围 进入第2页,转到A列的第一个空白单元格,然后粘贴值。 我正在使用下面的脚本,并且 目标范围的坐标超出工作表的尺寸

  • 我正在尝试编写一些函数 复制谷歌表单提交到从表单提交表到所有线索表 根据单元格值="open"将整行从"All Leads"工作表移动到"Open Leads"工作表 根据单元格值=关闭/丢失/空白将整行数据移回所有线索或关闭、丢失的工作表 但我不会让它触发onEdit或onFormSubmission。非常感谢您的帮助,正如您所知,我对脚本编写还不熟悉。 这是共享的谷歌电子表格 https://

  • 对Google Sheets脚本编辑非常陌生,但我正在尝试在工作表之间移动行。我已经使用getLastRow成功地做到了这一点,但是现在我正在尝试基于特定列来做到这一点。这样做的原因是信息所在的工作表具有预设的数据验证字段和复选框,导致该行每次都要排1000。 我在寻找当前工作表下拉菜单上选择的选项时,它会根据某一列找到第一个可用行,并替换该行(除了预设字段外,该行基本上为空)。 目前我有以下几点

  • 我希望表2(标题为“托管交易”)按日期自动排序,表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张谷歌表中。我已经找到了下面的脚本,我对它进行了轻微的修改,它在第2页上的效果非常好,可以按日期自动排序; 但是,我希望第一张工作表按照第2列中的姓氏自动排序,而不是脚本所指的第7列 值得一提的是,我对脚本做了以下更改,并在下面的脚本中添加了按姓氏排序的脚本,该脚本在第1页的第2列中运行良好; 但

  • 这里是VBA新手。 谢谢你的教育!