IMPORTRANGE, исключая все строки, которые идут после первой пустой строки - PullRequest
0 голосов
/ 04 июля 2019

Я хотел бы знать, как я могу импортировать диапазон, исключая все строки из источника, которые идут после первой пустой строки.

Например, допустим, у меня есть лист с 200 строками, но строка 101 пуста, но от 102 до 200 все строки имеют значения. Я хочу импортировать только строки 1: 100.

Мне нужно сделать это независимо от того, сколько строк имеет исходный лист, потому что мы регулярно импортируем данные, и число допустимых строк увеличивается при каждом импорте.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

В дополнение к тому, что уже здесь, если вы хотите сделать это более обобщенно, используя 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());
}

Для копирования данных в новый диапазон.

0 голосов
/ 04 июля 2019

было бы так:

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...