IMPORTRANGE排除第一个空行之后的所有行

时间:2019-07-04 07:03:06

标签: google-apps-script google-sheets google-sheets-formula array-formulas importrange

我想知道如何导入范围,其中不包括源中排在第一空行之后的所有行。

例如,假设我有一个包含200行的工作表,但是行101为空,但是从102到200的所有行都有值。我只想导入1:100行。

我需要独立于源表包含多少行来执行此操作,因为我们会定期导入数据,并且每次导入时有效行的数量都会增加。

2 个答案:

答案 0 :(得分:0)

是这样的:

=ARRAYFORMULA(
 IMPORTRANGE("ID_or_URL", "Sheet3!F1:F"&MIN(IF(
 IMPORTRANGE("ID_or_URL", "Sheet3!F1:F")="", ROW(A:A), ))))

enter image description here

答案 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());
}

要将数据复制到新的范围。