QUERY:Return 如果从出生之日起超过一定年龄的姓名
QUERY: Return name if over a certain age from date of birth
这是一个例子table:
A B
------ ----------
1 | Name | DOB
2 | John | 01/01/2011
3 | Tom | 02/02/2002
我需要 return 11 岁以上人员的姓名,仅使用两个可用列。
在我看来,查询应该类似于以下示例,其中 [11 years old]
代表进行选择所需的魔法。
=QUERY(A1:B, "select A where B >[11 years old]", 1)
不幸的是,我无法将带有公式的年龄列添加到数据 table。
请随时提出替代公式。
尝试:
=ARRAYFORMULA(QUERY({A1:A, YEAR(TODAY())-YEAR(B1:B)}, "select Col1 where Col2 >11", 1))
或者只是:
={"Name"; FILTER(A2:A, YEAR(TODAY())-YEAR(B2:B)>11)}
看你怎么读题了,如果你把天和月都算进去,说某人11岁零一天是'over 11 years old',那么要么
=ArrayFormula(QUERY({A2:A,date(year(B2:B)+11,month(B2:B),day(B2:B))},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))
或
=ArrayFormula(QUERY({A2:A,edate(B2:B,12*11)},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))
请注意,对于闰年 2 月 29 日出生的人,date 和 edate 似乎给出了不同的结果。 2004-02-29 'over 11' 出生的人是 2015-03-01 还是刚好 11 岁?我不确定,我不知道是否对此有普遍共识。
今天在哪里() = 2022-05-13
这是一个例子table:
A B
------ ----------
1 | Name | DOB
2 | John | 01/01/2011
3 | Tom | 02/02/2002
我需要 return 11 岁以上人员的姓名,仅使用两个可用列。
在我看来,查询应该类似于以下示例,其中 [11 years old]
代表进行选择所需的魔法。
=QUERY(A1:B, "select A where B >[11 years old]", 1)
不幸的是,我无法将带有公式的年龄列添加到数据 table。
请随时提出替代公式。
尝试:
=ARRAYFORMULA(QUERY({A1:A, YEAR(TODAY())-YEAR(B1:B)}, "select Col1 where Col2 >11", 1))
或者只是:
={"Name"; FILTER(A2:A, YEAR(TODAY())-YEAR(B2:B)>11)}
看你怎么读题了,如果你把天和月都算进去,说某人11岁零一天是'over 11 years old',那么要么
=ArrayFormula(QUERY({A2:A,date(year(B2:B)+11,month(B2:B),day(B2:B))},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))
或
=ArrayFormula(QUERY({A2:A,edate(B2:B,12*11)},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))
请注意,对于闰年 2 月 29 日出生的人,date 和 edate 似乎给出了不同的结果。 2004-02-29 'over 11' 出生的人是 2015-03-01 还是刚好 11 岁?我不确定,我不知道是否对此有普遍共识。
今天在哪里() = 2022-05-13