【问题标题】:Using Macros Copy and Paste At Last Row在最后一行使用宏复制和粘贴
【发布时间】:2022-11-11 19:00:47
【问题描述】:

我只需要使用 Google 宏在电子表格中复制和粘贴行数据。 但我会尝试录制宏以保持我的功能正常工作。 它给出的结果只是将一个值粘贴到下一个 function(+1) 。 所以但是,我希望在底行粘贴一个新行数据之前会创建一个新行。 方法是 首先在底行创建一个新行 第二次粘贴插入我选择的任何行数据。

function _3333() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 1);
  spreadsheet.getActiveRange().offset(spreadsheet.getActiveRange().getNumRows(), 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getCurrentCell().activate();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(spreadsheet.getCurrentCell().getRow() - 1, 1, 1, sheet.getMaxColumns()).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

【问题讨论】:

  • 虽然我不确定我是否能正确理解你的问题,但我提出了一个修改点作为答案。你能确认一下吗?如果我误解了您的问题并且没有用,我深表歉意。

标签: google-apps-script google-sheets macro-recorder


【解决方案1】:

在您的情况下,如何进行以下修改?

从:

sheet.getRange(spreadsheet.getCurrentCell().getRow() - 1, 1, 1, sheet.getMaxColumns()).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

至:

sheet.getRange(spreadsheet.getCurrentCell().getRow() - 1, 1, 1, sheet.getMaxColumns()).copyTo(sheet.getRange(sheet.getLastRow() + 1, 1), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  • 在此修改中,您的getCurrentCell() 被复制到最后一行的下一行。

  • 如果要将getCurrentCell()复制到最后一行,请修改如下。

      sheet.getRange(spreadsheet.getCurrentCell().getRow() - 1, 1, 1, sheet.getMaxColumns()).copyTo(sheet.getRange(sheet.getLastRow(), 1), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    

添加:

从您的以下回复中,

我希望在底行粘贴新行数据之前会创建一个新行。方法是首先在底行创建一个新行第二个粘贴插入我选择的任何行数据。

  1. 在底行插入新行。
  2. 将选定的行复制并粘贴到插入的新行中。
  3. 这些是同一个活动表。

    在这种情况下,下面的示例脚本怎么样?

    示例脚本:

    function myFunction() {
      var sheet =  SpreadsheetApp.getActiveSheet();
      var lastRow = sheet.getLastRow();
      sheet.insertRowAfter(lastRow);
      var selectedRow = sheet.getRange(sheet.getActiveRange().getRow(), 1, 1, sheet.getLastColumn());
      selectedRow.copyTo(sheet.getRange(lastRow + 1, 1), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    }
    

【讨论】:

  • 我很抱歉描述错误。我希望在底行粘贴新行数据之前会创建一个新行。方法是首先在底行创建一个新行第二个粘贴插入我选择的任何行数据。
  • @Edward 感谢您的回复。我带来的不便表示歉意。从你的问题来看,我无法理解你的回答。我对此深表歉意。根据您的回复,我添加了一个示例脚本。你能确认一下吗?如果这没有用,我再次道歉。
  • 哇太棒了它的工作。哦,我的上帝,你真是个天才。
  • 玫瑰是红色的,紫罗兰是蓝色的,田中是个天才,你需要考虑将答案标记为已接受:stackoverflow.com/help/someone-answers
  • 感谢您在系统中发现了一些故障。但是,我是新来的。我很抱歉我需要至少 15 个声望才能投票。 :<
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多