Скрипт Google Apps — копирование ячеек в новый лист при условии

#google-apps-script #google-sheets

Вопрос:

У меня есть электронная таблица с тысячами строк, и некоторые записи имеют «#N/A» в первом столбце в результате поиска. Я хочу, чтобы эти строки были полностью скопированы на новый лист.

Пример:

ID Другие Данные
#N/A строка 1
123 строка 2
#N/A строка 3
#N/A строка 4
#N/A строка 5
456 строка 6

Новый лист должен содержать строки с «#N/A» в поле идентификатора

ID Другие Данные
#N/A строка 1
#N/A строка 3
#N/A строка 4
#N/A строка 5

Ответ №1:

Просто используйте формулу ФИЛЬТРА: =ФИЛЬТР(A2:B100, A2:A100=»#N/A»)

Ответ №2:

соедините листы с запросом, вот как бы я это сделал:

 =query(importrange("https://docs.google.com/spreadsheets/d/ID",
"'SHEET 1'!A2:Z"),
"select * where Col1 = '#N/A'")
 

Вам придется проверить соединение между листами.

Ответ №3:

Вы можете обратиться к этому образцу кода о том, как отфильтровать данные с листа и записать их на новый лист с помощью скрипта приложений

Пример Кода:

 function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Filter N/A', 'FilterNA')
      .addToUi();
}

function FilterNA(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();

  var data = sheet.getDataRange().getDisplayValues();
  var newData = data.filter(row => ["ID","#N/A"].includes(row[0]));
  newSheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);
}
 

Что он делает?

  1. Создайте пользовательское меню для запуска функции копирования
  2. Выберите активный лист и создайте новый лист с помощью insertSheet()
  3. Прочитайте данные в исходном листе с помощью getDataRange() и getDisplayValues()
  4. Отфильтруйте массив с помощью Array.filter(), в этом примере я создал список строк, которые я хочу отфильтровать («ID» и «#N/A»), затем проверьте, является ли столбец 1 текущей строки идентификатором или N/A, используя Array.includes()
  5. Запишите отфильтрованные данные на новый лист.

Выход:

введите описание изображения здесь

Комментарии:

1. Пожалуйста, дайте мне знать, если у вас возникли какие-либо проблемы, чтобы я мог соответствующим образом обновить ответ, я только предположил, что вы хотите скопировать отфильтрованные данные на новый лист.