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

将每个新值复制并粘贴到两个不同工作表上的下一个空行

邹华皓
2023-03-14

我有一张谷歌表格,里面有多张不同的表格。每次我向第一张工作表的单元格(比如G2: I1000中的任何单元格)添加文本时,我都希望其他几个单元格的值出现在第二张工作表的下一个空行中。例如,如果我在第一张工作表上向I5添加文本,那么我希望自动将单元格A5: B5的值粘贴到第二张工作表(也在列A和B中)的下一个空行。

共有1个答案

澹台锐
2023-03-14

据我所知,你想做以下事情:

  • 每次编辑某个工作表中G2: I1000范围内的值时,您都希望复制编辑行中的前两个单元格(A,B)。
  • 您想将这两个值传递到另一张工作表中的第一个空行。

您可以使用onEdit触发器来完成此操作。每当编辑绑定到它的电子表格时,该函数都会运行。但是为了避免一直复制值,在将值从一张表复制到另一张表之前必须满足几个条件:

  • 编辑的行索引大于1且小于1001
  • 编辑的列为G、H或I。
  • 编辑的图纸就是要从中复制值的图纸

满足这些条件后,函数应获取值A和B,并将它们复制到另一个工作表中的第一个空行。这可以使用appendRow轻松实现。

下面的代码可以做所有你想做的事情:

function onEdit(e) {
  var editedSheet = e.source.getActiveSheet(); // Gets sheet that was edited
  var destSheet = e.source.getSheetByName("Destination"); // Change this according to your preferences
  var range = e.range; // Gets range that was edited
  var editedRow = range.getRow();
  var editedCol = range.getColumn();
  var editedSheetName = editedSheet.getName();
  var originName = "Origin"; // Change this according to your preferences
  if (editedRow > 1 && editedRow < 1001 && editedCol > 6 && editedCol < 10 && editedSheetName == originName) {
    var firstCol = 1;
    var numCols = 2;
    var numRows = 1;
    var copyValues = editedSheet.getRange(editedRow, firstCol, numRows, numCols).getValues()[0];
    destSheet.appendRow(copyValues);
  }
}

考虑到我已经用下面的方式命名了sheet。请根据您的喜好更改此选项:

  • Origin是从中复制值的工作表
  • 如果仅当L列中的对应值等于“是”时才希望复制数据,则应更改此行代码:
if (editedRow > 1 && editedRow < 1001 && editedCol > 6 && editedCol < 10 && editedSheetName == originName) {

对于这一点:

if (editedCol == 12 && range.getValue() == "YES" && editedSheetName == originName && editedRow > 1 && editedRow < 1001) {

其中editedCol应等于列L(12)的索引,编辑范围的值应为YES。

  • 如果您希望在这两种情况下复制数据(即,如果G、H、I列被编辑,并且L列被编辑为“是”),则该行应更改为:
if (((editedCol == 12 && range.getValue() == "YES") || (editedCol > 6 && editedCol < 10)) && (editedSheetName == originName && editedRow > 1 && editedRow < 1001)) {

它将两个条件表达式合并为一个,并在其中至少有一个为真时复制数据。

我希望这能有所帮助。

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

  • 我有以下脚本: 这是我找到脚本的原始帖子:https://support.google.com/docs/forum/AAAABuH1jm0hR40qh02UWE/?hl=en 我想对代码做一些小的调整,但不知道从哪里开始。 目前,当在G列中输入“Y”时,它复制整行,并将行内容放在ORDERS!的最后一行!。 我想让它做的是: 1) 仅复制订单最后一行上的B、C和E列!2) 在中删除E和F中的值!

  • 我写了一个google脚本来创建和粘贴从一个单元格到另一个单元格的值(相同的电子表格)。该守则包括以下两个步骤: > (不工作):将相邻单元格的新值粘贴到第二张工作表中下一个空行(第1列)的单元格中。 下面的代码是我迄今为止尝试过的代码,但第二页上没有显示该值。有人知道我在下面的尝试中的问题在哪里吗? 谢谢你

  • 我写了下面的代码,并不断地看到。我试图克服这个问题,但似乎没有任何效果。我正试图从一个工作簿复制整个工作表,并将其粘贴到另一个工作簿中:

  • 我需要从一个工作簿复制棕褐色单元格并粘贴到另一个工作簿中。并且只需要在Excel中获取特定的单元格值。我实现了这一点,但只能粘贴到同一工作簿中的另一个工作表中。你能帮助我在粘贴数据到另一个工作簿上的一个特定的工作表,也应该粘贴的值在第二行,(即从第二行开始),因为第一行有标题在它。 源表标题: 项目阶段状态st Dt结束Dt预资源备注备注 Dest表标题: 现有代码: