我想知道如何导入范围,其中不包括源中排在第一空行之后的所有行。
例如,假设我有一个包含200行的工作表,但是行101为空,但是从102到200的所有行都有值。我只想导入1:100行。
我需要独立于源表包含多少行来执行此操作,因为我们会定期导入数据,并且每次导入时有效行的数量都会增加。
答案 0 :(得分:0)
是这样的:
=ARRAYFORMULA(
IMPORTRANGE("ID_or_URL", "Sheet3!F1:F"&MIN(IF(
IMPORTRANGE("ID_or_URL", "Sheet3!F1:F")="", ROW(A:A), ))))
答案 1 :(得分:0)
添加到此处已有的内容中,如果您想使用Apps Script更常规地执行此操作,则可以将此内容绑定到工作表并根据需要运行。
假设要使用A列作为要复制到工作表中的数据,则可以通过运行
找到第一行为空白function obtainFirstBlankRow() {
var sheet = SpreadsheetApp.getActive().getSheetByName('SHEET-TO-COPY-TO');
// search for first blank row
var col = sheet.getRange('A:A');
var vals = col.getValues();
var count = 0;
while (vals[count][0] != "") {
count++;
}
return count + 1;
}
这将返回与A列中的单元格为空白的第一行相对应的数字-您可以通过将A:A
中的sheet.getRange()
替换为该范围来更改是否检查哪一列你需要。
然后您可以使用:
function myFunction() {
var startRow = 1; //assuming you want to copy from row 1
var endRow = obtainFirstBlankRow();
var startCol = 1; // assuming you want to copy starting at column A
var endCol = 26; // assuming copying values up to column Z
var startRowPaste = 1; //assuming you want to copy starting at row 1
var startColPaste = 1; // assuming you want to copy starting at column A
//example range to copy from
var rangeToCopy = SpreadsheetApp.openById('IDOfSheetToCopyFrom').getSheetByName('SheetToCopyFrom')
var rangeToCopy = rangeToCopy.getRange(startRow, startCol, endRow, endCol);
//make sure the range you're copying to is the same size
var newRange = SpreadsheetApp.openById('IDOfSheetToCopyTo').getSheetByName('SheetToCopyTo')
var newRange = newRange.getRange(startRowPaste, startColPaste, rangeToCopy.getNumRows(), rangeToCopy.getNumColumns());
newRange.setValues(rangeToCopy.getValues());
}
要将数据复制到新的范围。