1

我需要一些帮助,我可以在 Excel VBA 中完成,但在 Excel Online 中找不到。我有下面的示例 1 工作,但它不是动态的,我需要将它粘贴到最后一行下。如果您可以提供帮助,请提供示例或编辑代码并重新发送。谢谢你。

//Example 1
  function main(workbook: ExcelScript.Workbook) {
    let data_sheet = workbook.getWorksheet("Data")
    let progr_sheet = workbook.getWorksheet("Programming");
// Paste to range A1 on progr_sheet from range A4:L19 on data_sheet
  progr_sheet.getRange('A4').copyFrom(data_sheet.getRange("A4:L19"), ExcelScript.RangeCopyType.all, false, false);
}

//Example 2 [Below doesn't work just and example of what I am trying to do.]
// function main(workbook: ExcelScript.Workbook) {
//   let data_sheet = workbook.getWorksheet("Data")
//   let progr_sheet = workbook.getWorksheet("Programming");
//   let myUsedRange = progr_sheet.getUsedRange();
//   let lastRow = myUsedRange.getRowCount();
//   console.log(lastRow) +1;
//   // Paste to range column A (lastRow) on progr_sheet from range A4:L19 on data_sheet
//   progr_sheet.getRange('A & lastRow').copyFrom(data_sheet.getRange("A4:L19"), ExcelScript.RangeCopyType.all, false, false);
//}
4

2 回答 2

0

我想你已经走了大部分路。你的问题是这一行

  progr_sheet.getRange('A & lastRow').copyFrom(data_sheet.getRange("A4:L19"), ExcelScript.RangeCopyType.all, false, false);

您可以通过更改此部分来修复它:

'A & lastRow'

对此:

'A' + lastRow

请注意,根据您的代码当前的结构方式,它会覆盖编程表中的最后一行数据。要将数据复制到下一行,只需将 1 添加到 lastRow 变量,如下所示:

let lastRow = myUsedRange.getRowCount() + 1;

此外,对于未来的此类问题,我还将添加 Office 脚本标签,以便那里的人可以查看您未来的问题并为您提供帮助。

于 2022-02-16T23:48:41.420 回答
0

我认为您可能正在使用 Office 脚本,而不是 Office JS 加载项。

如果我是对的,那么试试这个......

function main(workbook: ExcelScript.Workbook)
{
  let data_sheet = workbook.getWorksheet("Data")
  let progr_sheet = workbook.getWorksheet("Programming");

  // Get the last row in the programming worksheet.
  // We add another 1 because it returns the index which starts from 0 and 
  // I'm not using getRowCount() because if your worksheet doesn't start using
  // from cell A1, your row count may not equal the last actual row.
  let lastRow = progr_sheet.getUsedRange().getLastCell().getRowIndex() + 1;

  console.log(lastRow);

  // Add 1 to the last row so we start from the next blank.
  lastRow = lastRow + 1

  progr_sheet.getRange("A" + lastRow).copyFrom(data_sheet.getRange("A4:L19"));
}

...我无法查明所有问题,但这条线...

progr_sheet.getRange('A & lastRow')

...不会为你工作。这实际上会以字符串A & lastRow的形式出现。

于 2022-02-16T23:49:34.840 回答