Установить возрастную группу на основе DOB - PullRequest
0 голосов
/ 26 октября 2018

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

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

- U 5   01 Oct 2013  30 Sep 2017
- U 6    01 Oct 2012     30 Sep 2013
- U 7    01 Oct 2011     30 Sep 2012
- U 8    01 Oct 2010     30 Sep 2011
- U 9    01 Oct 2009     30 Sep 2010
- U 10   01 Oct 2008     30 Sep 2009
- U 11   01 Oct 2007     30 Sep 2008
- U 12   01 Oct 2006     30 Sep 2007
- U 13   01 Oct 2005     30 Sep 2006
- U 14   01 Oct 2004     30 Sep 2005

Table to lookup Age Group

1 Ответ

0 голосов
/ 27 октября 2018

Даты могут быть немного сложнее. См. Этот вопрос , чтобы получить лучшее представление. Но этот сценарий, по крайней мере, поможет вам начать.

Этот Google Sheet демонстрирует пользовательскую формулу (AGEGROUP) для сравнения даты ввода с таблицей "возрастные группы".

Примечание: Добавлять в лист "возрастные группы" можно только при необходимости. Последняя строка со значением используется, чтобы рассмотреть, является ли кто-то слишком старым. Первый ряд листа используется, чтобы увидеть, слишком ли молодой человек.

AGEGROUP() примет ссылку на ячейку для поиска

Пример AGEGROUP(B2) проверит ячейку B2, при условии, что она содержит дату, и вернет групповое назначение (U 5, U 6, U7 ...).

Поиск дат вручную (вместо ссылки на другую ячейку) может быть выполнен вложением DATE внутри AGEGROUP. Вы должны следовать правильным аргументам для DATE (год, месяц, день).

Пример AGEGROUP(DATE(2010,1,21))

Я новичок в пользовательских функциях и не изучал варианты поддержки таких функций, как @param или @return и т. Д.

Сценарий приложений

/**
* Finds age group of the input value (date).
*
* @param {date} Input the date to compare to date ranges.
* @return Returns age groupd based on provided date.
* @customfunction
*/

function AGEGROUP(date) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var ages = ss.getSheetByName("age-groups");
  var range = ages.getDataRange();
  var values = range.getValues();

  var i = 0;
  var ranges = values.length;
  var lastRow = ranges -1;

  // loop through dateRanges
  for(i; i < ranges; i++) {   

    // if date in AGEGROUP()
    if(date >= values[i][1] && date <= values[i][2]) {
      // return age group
      return values[i][0];
    }

    // if child is too old
    if(date > values[0][2]) {
      return "Child is too young.";
    }

    // if child is too young
    if(date < values[lastRow][1]) {
      return "Child is too old.";
    }
  }
}
...