簡體   English   中英

將列值從一個電子表格復制到另一個電子表格,僅添加必要的行

[英]Copy column values from one spreadsheet to another spreadsheet, adding only the necessary rows

Sheet 1 / Sheet 2
在此處輸入圖像描述 在此處輸入圖像描述

我使用此公式將值從一列復制到另一電子表格列:

function SheetToSheet() {
  var sss = SpreadsheetApp.openById('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
  var ss = sss.getSheetByName('Sheet 1');
  var range = ss.getRange(12,1,ss.getMaxRows()+1-12,1);
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
  var ts = tss.getSheetByName('Sheet 2');
  ts.getRange(12,1, data.length, data[0].length).setValues(data);
}

在這種情況下,我想從第12行收集值,如果需要在另一個電子表格中添加行,請使用ss.getMaxRows()+1-12 ,它只會根據需要添加盡可能多的行。

結果:
Add Row 11, 12, 13, 14 and 15
Add Values in Row 12, 13, 14 and 15
在此處輸入圖像描述

如果我使用getlastrow() ,則會添加更多不必要的行:

在此處輸入圖像描述

如果我在不計算+1-NumberOfRows的情況下使用getMaxRows() ,它也總是復制不必要的行數:

在此處輸入圖像描述

是否有一個固定的 model 並不總是需要放置 calc +1-NumberOfRows 我害怕忘記更改計算值並添加錯誤的行數。

解釋:

setValues function 將添加絕對必要的行數,以便數據可以放入。它不會刪除錯誤,也不會添加超出需要的行數。

假設您要從目標工作表中的第 1 行開始粘貼,並且要粘貼 10 行數據,但目標工作表只有 6 行。 setValues function 將創建更多行,以便您的數據可以完全適合。

最小可重現示例:

表 1

假設您在Sheet1有 10 行數據:

在此處輸入圖像描述

表 2

Sheet2只有 6 行可用:

在此處輸入圖像描述

如果您運行此代碼:

function myFunction() {
  const ss = SpreadsheetApp.getActive();
  const sh1 = ss.getSheetByName('Sheet1');
  const sh2 = ss.getSheetByName('Sheet2');
  const data = sh1.getRange('A1:A10').getValues();
  sh2.getRange(1,1,data.length,data[0].length).setValues(data);
}

setValues將完成這項工作並添加適合數據所需的絕對必要的行。

Sheet2(腳本執行后)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM