根据DOB设定年龄组

时间:2018-10-26 05:25:06

标签: function google-sheets group-by

我想创建一个Google表格功能,如果提供了出生日期,则可以查找下表并提供适当的年龄段。我将使用此表将200个孩子分组,以挽救冲浪救生。

例如......出生日期是2011年10月11日,那么年龄段将是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 :(得分:0)

日期可能会有些棘手。请参阅This question以获得更好的主意。但是此脚本至少可以帮助您入门。

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.";
    }
  }
}