Установить возрастную группу на основе dob

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

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

- 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

Можете ли вы поделиться копией своей электронной таблицы с правами редактирования? Это значительно упростило бы поиск решения.

JPV 26.10.2018 08:25
1
1
121
1

Ответы 1

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

Этот Таблица Google демонстрирует настраиваемую формулу (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.";
    }
  }
}

Привет, ребята ... Спасибо за быстрые ответы ..... Вот копия того, чего я пытаюсь достичь.

Gman 28.10.2018 10:14
docs.google.com/spreadsheets/d/…
Gman 28.10.2018 10:14

На первый взгляд, ваш запрос должен работать. Я пробовал несколько вариантов запроса и не могу заставить его работать, потому что не знаю почему ... Альтернатива - = FILTER ($ F $ 2: $ F $ 11, $ G $ 2: $ G $ 11 <= B2, $ H $ 2: $ H $ 11> = B2), или если вы хотите показать, слишком ли они стары или молоды = IF (B2> $ H $ 2, «слишком молод», IF (B2 <$ G $ 11, «слишком стары) ", ФИЛЬТР ($ F $ 2: $ F $ 11, $ G $ 2: $ G $ 11 <= B2, $ H $ 2: $ H $ 11> = B2))). В противном случае работает пользовательская функция, которую я сделал в App Script.

iMarketingGuy 29.10.2018 01:36

Другие вопросы по теме