Я хочу в среднем отфильтрованный диапазон - PullRequest
0 голосов
/ 08 марта 2020

Я не был уверен, как озаглавить мою проблему, но вот она: у меня есть база данных Google Pages с двумя листами. Один лист собирает ответы формы, которые находятся в форме опроса, например: Как мой лист собирает ответы

Естественно, я могу отфильтровать числа, используя = VALUE (LEFT (CELL)) (см. рисунок) на том же листе, хотя это требует обновления вручную каждый раз, когда кто-то вводит ответ.

На следующем листе я беру среднее значение, содержащее одно и то же имя пользователя, используя AB C DE столбцы, как видно на первом рисунке. Вот так: Как второй лист фильтрует данные.

Однако я хочу сделать все это на одном листе. Я пробовал несколько разных способов, но безуспешно. Другими словами, я хочу, чтобы второй лист автоматически фильтровал число из строки, поскольку мне не нужно обновлять его каждый раз.

По сути, это изображение - то, что я хочу, чтобы он делал каждый раз, когда кто-то отправляет новый ответ: Что я хотел бы сделать . Однако это не будет работать, поскольку вы не можете выполнять эти операции в диапазоне. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Вы собираете оценки курсов от участников, используя форму Google.

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

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


У этого вопроса может быть много решений, и этот Ответ следует рассматривать как одно решение.

Этот ответ состоит из трех частей:

  • Лист ответов Google Form
  • и onFormSubmit функция: эта функция Устанавливается триггер и выполняется каждый раз, когда есть ответ формы. Сценарий извлекает значение оценки из соответствующих строк оценки, используя split, преобразует оценку из строки в текст и добавляет оценку и итоги в дополнительные столбцы на листе ответов Google.
  • лист анализа с использованием query. Это вычисляет средние оценки в каждой области и в целом сгруппированы каждым лидером курса. По мере получения каждой новой формы ответов лист анализа автоматически обновляет среднее значение для существующих лидеров курса или начинает отслеживать новых лидеров курса.

Эта функция должна быть установлена ​​как onForSubmit триггер.

function buildscore(e) {

  var ss = SpreadsheetApp.getActiveSpreadsheet()

  var range = e.range;
  var row = range.getRow();
  var sheetname = range.getSheet().getSheetName();
  var sheet = ss.getSheetByName(sheetname);

  // create a temporary array to store values and later set values for Columns H to M
  var temp = [];


  // A) Quality of Communication 
  var comms = e.namedValues['A) Quality of Communication'][0].split(" ")[0];
  comms=+comms;

  // B) Enforcement of Rules
  var rules = e.namedValues['B) Enforcement of Rules'][0].split(" ")[0];
  rules=+rules;

  // C) Maturity during event
  var maturity = e.namedValues['C) Maturity during event'][0].split(" ")[0];
  maturity=+maturity;

  // D) Event pace
  var pace = e.namedValues['D) Event pace'][0].split(" ")[0];
  pace=+pace;

  // E) Event quality
  var quality = e.namedValues['E) Event quality'][0].split(" ")[0];
  quality=+quality;

  var total = (comms+rules+maturity+pace+quality)*4;

  // push the scores and total onto the temporary array
  temp.push(comms);
  temp.push(rules);
  temp.push(maturity);
  temp.push(pace);
  temp.push(quality);
  temp.push(total);

  // update Columns H to M for the scores and total
  var targetrange = sheet.getRange(row,8,1,6);
  targetrange.setValues([temp]);

  return;
}

Введите этот запрос в ячейку A2 листа анализа оценки.

=query('Form Responses 4'!B3:M,
       "Select B, Avg(M), Avg(H), Avg(I), Avg(J), Avg(K), Avg(L) 
       where B is not null 
       group by B 
       LABEL B 'UserName', Avg(M) 'Mean Total Score', Avg(H) 'A) Communication',
       Avg(I) 'B) Rules', Avg(J) 'C) Maturity',Avg(K)'D) Pace', 
       Avg(L) 'E) Quality'"
       ,0) 

Лист ответа формы плюс дополнительные столбцы

Form Response Sheet


Лист анализа оценки

Evaluation Analysis Sheet

0 голосов
/ 09 марта 2020

Попробуйте использовать функцию QUERY на листе «Сводная статистика оценки».

  • Создайте новый лист (чтобы избежать различных формул, уже включенных в «Сводную статистику оценки»; вы можете добавить Условное форматирование отдельно).
  • В ячейке A2 введите формулу:
    =query('Training Evaluations'!A3:O,"Select C, O,J,K,L,M,N LABEL C 'UserName', O 'Mean Total Score', J 'A) Communication', K 'B) Rules', L 'C) Maturity', M 'D) Pace', N 'E) Quality'",0)
  • При добавлении дополнительных откликов формы имя пользователя и значения из листа отклика формы автоматически отображаются на QUERY.

Sample data

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