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

#google-sheets #filtering #google-sheets-formula #reporting

#google-sheets #фильтрация #google-sheets-формула #отчетность

Вопрос:

У меня есть диапазон данных, заполненных из формы Google в листе «Данные». Мне нужно создать отчет (в листе «Отчет»), который показывает посещаемость учащихся на основе имени (из выпадающего списка). Данные, которые являются пустыми, исключаются из этого отчета, как видно из столбца i в столбец k

желаемый результат

Я поделился листом здесь

Я пытался использовать filter =filter(Данные!B1: I20,Данные!E1:E20<>»»)

но все же я не могу найти способ изменить «условие» в этой формуле для ссылки на отчет листа A1.

какова правильная формула для достижения этого?

Спасибо вам за вашу помощь.

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

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

2. о, так жаль, что я забыл открыть общий ресурс.. Теперь он открыт .. спасибо

3. Не очень понятно, чего вы пытаетесь достичь. Вы хотите получить сумму по каждому предмету за каждый день, где присутствовал студент? (И поэтому поле в таблице данных пустое)?

4. Желаемый отчет отображается в столбце от i до столбца k в отчете sheet..

5. Я пытался использовать filter =filter(Данные!B1: I20,Данные!E1:E20<>»»), но «условие» в этой функции должно быть взято из отчета листа A1 dropdownlist. а также, результат должен показывать только запись этих студентов.

Ответ №1:

Используя Apps Script, вам нужно будет использовать функцию getSheetByName(имя).

Пример:

 // The code below logs the index of a sheet named "Expenses"
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
if (sheet != null) {
  Logger.log(sheet.getIndex());
}
  

Затем, чтобы найти из столбца E строки, имеющие значение, вам нужно будет использовать метод getRange (A1Notation):

 // Get a range A1:D4 on sheet titled "Invoices"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("Invoices!A1:D4");

// Get cell A1 on the first sheet
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("A1");
  

Затем вам нужно будет выполнить итерацию по этим строкам и получить строки, в которых в столбце E что-то есть.

Получив это, вы можете получить Report лист и задать значения там с помощью setValues(значения)

Для получения дополнительной информации о том, как использовать функцию, которая может вам понадобиться, у вас есть ссылка на SpreadsheetApp и обзор расширения Google Таблиц