Google 工作表 - 查询每个月的最小值
Google Sheets - Query Minimum value for each month
我正在尝试获取数据集中每个月的最小值,如下所示:
1/3/2000 15:30:00 1592.2
1/4/2000 15:30:00 1638.7
1/5/2000 15:30:00 1595.8
1/6/2000 15:30:00 1617.6
1/7/2000 15:30:00 1613.3
1/10/2000 15:30:00 1632.95
1/11/2000 15:30:00 1572.5
1/12/2000 15:30:00 1624.8
1/13/2000 15:30:00 1621.4
1/14/2000 15:30:00 1622.75
1/17/2000 15:30:00 1611.6
1/18/2000 15:30:00 1606.7
1/19/2000 15:30:00 1634.85
1/20/2000 15:30:00 1601.1
1/21/2000 15:30:00 1620.6
1/24/2000 15:30:00 1613.6
1/25/2000 15:30:00 1586.4
1/27/2000 15:30:00 1603.9
1/28/2000 15:30:00 1599.1
1/31/2000 15:30:00 1546.2
2/1/2000 15:30:00 1549.5
2/2/2000 15:30:00 1588
2/3/2000 15:30:00 1597.9
2/4/2000 15:30:00 1599.75
2/7/2000 15:30:00 1636.6
2/8/2000 15:30:00 1662.75
2/9/2000 15:30:00 1689.65
2/10/2000 15:30:00 1711.2
2/11/2000 15:30:00 1756
2/14/2000 15:30:00 1744.5
2/15/2000 15:30:00 1702.55
2/16/2000 15:30:00 1711.1
2/17/2000 15:30:00 1742.1
2/18/2000 15:30:00 1717.8
2/21/2000 15:30:00 1753.5
2/22/2000 15:30:00 1739.05
2/23/2000 15:30:00 1696.4
2/24/2000 15:30:00 1732
2/25/2000 15:30:00 1710.45
2/28/2000 15:30:00 1722.55
2/29/2000 15:30:00 1654.8
我有以下查询可以获取每个月的最小值,但我无法获得 month.Any 帮助的日期。
=QUERY( {D:E},
"select year(Col1), month(Col1)+1, min(Col2)
where Col1 is not null
group by year(Col1), month(Col1)+1",
1
)
我会用不同的方式处理它,使用 'FILTER' 而不是 'QUERY'。假设您的日期和金额分别从 D2 和 E2 开始,headers 在 D1 和 E1 中,请尝试以下公式:
=ArrayFormula({"YEAR","MONTH","DAY","MONTHLY MIN"; FILTER({YEAR(D2:D),MONTH(D2:D),DAY(D2:D),E2:E},VLOOKUP(DATE(YEAR(D2:D),MONTH(D2:D),1),SORT(FILTER({DATE(YEAR(D2:D),MONTH(D2:D),1),E2:E},D2:D<>""),2,1),2,FALSE)=E2:E)})
首先生成headers(可根据需要在公式内更改)。
这 — SORT(FILTER({DATE(YEAR(D2:D),MONTH(D2:D),1),E2:E},D2:D<>""),2,1)
— 会将所有日期转换为该月的第一天,然后按金额升序排序,将最小金额留在顶部附近,因此第一个被找到VLOOKUP
.
FILTER
然后 returns YEAR
、MONTH
、DAY
和金额仅适用于查找 date-converted-to-first-of-month 的行SORT
数组中的行 returns 与列 E 中为该行列出的数量相同。
另一种方法是使用如下查询
=query({ARRAYFORMULA(year(D:D)),ARRAYFORMULA(month(D:D)),E:E},"select Col1,min(Col3) where Col1>=1900 group by Col1 pivot Col2 label Col1 'year/month'")
说明
先把日期改成年月
也许还有另一种方法:
This sample spreadsheet 是专门为这个问题创建的。
您会在其中找到这个公式,该公式仅给出每月一个日期作为该月的最小日期。
=SORTN(SORT(ARRAY_CONSTRAIN({1*TEXT(D:D,{"mmmyyyy","m/d/yy"}),E:E},COUNTA(D:D),3),3,1),9^9,2,1,1)
我正在尝试获取数据集中每个月的最小值,如下所示:
1/3/2000 15:30:00 1592.2
1/4/2000 15:30:00 1638.7
1/5/2000 15:30:00 1595.8
1/6/2000 15:30:00 1617.6
1/7/2000 15:30:00 1613.3
1/10/2000 15:30:00 1632.95
1/11/2000 15:30:00 1572.5
1/12/2000 15:30:00 1624.8
1/13/2000 15:30:00 1621.4
1/14/2000 15:30:00 1622.75
1/17/2000 15:30:00 1611.6
1/18/2000 15:30:00 1606.7
1/19/2000 15:30:00 1634.85
1/20/2000 15:30:00 1601.1
1/21/2000 15:30:00 1620.6
1/24/2000 15:30:00 1613.6
1/25/2000 15:30:00 1586.4
1/27/2000 15:30:00 1603.9
1/28/2000 15:30:00 1599.1
1/31/2000 15:30:00 1546.2
2/1/2000 15:30:00 1549.5
2/2/2000 15:30:00 1588
2/3/2000 15:30:00 1597.9
2/4/2000 15:30:00 1599.75
2/7/2000 15:30:00 1636.6
2/8/2000 15:30:00 1662.75
2/9/2000 15:30:00 1689.65
2/10/2000 15:30:00 1711.2
2/11/2000 15:30:00 1756
2/14/2000 15:30:00 1744.5
2/15/2000 15:30:00 1702.55
2/16/2000 15:30:00 1711.1
2/17/2000 15:30:00 1742.1
2/18/2000 15:30:00 1717.8
2/21/2000 15:30:00 1753.5
2/22/2000 15:30:00 1739.05
2/23/2000 15:30:00 1696.4
2/24/2000 15:30:00 1732
2/25/2000 15:30:00 1710.45
2/28/2000 15:30:00 1722.55
2/29/2000 15:30:00 1654.8
我有以下查询可以获取每个月的最小值,但我无法获得 month.Any 帮助的日期。
=QUERY( {D:E},
"select year(Col1), month(Col1)+1, min(Col2)
where Col1 is not null
group by year(Col1), month(Col1)+1",
1
)
我会用不同的方式处理它,使用 'FILTER' 而不是 'QUERY'。假设您的日期和金额分别从 D2 和 E2 开始,headers 在 D1 和 E1 中,请尝试以下公式:
=ArrayFormula({"YEAR","MONTH","DAY","MONTHLY MIN"; FILTER({YEAR(D2:D),MONTH(D2:D),DAY(D2:D),E2:E},VLOOKUP(DATE(YEAR(D2:D),MONTH(D2:D),1),SORT(FILTER({DATE(YEAR(D2:D),MONTH(D2:D),1),E2:E},D2:D<>""),2,1),2,FALSE)=E2:E)})
首先生成headers(可根据需要在公式内更改)。
这 — SORT(FILTER({DATE(YEAR(D2:D),MONTH(D2:D),1),E2:E},D2:D<>""),2,1)
— 会将所有日期转换为该月的第一天,然后按金额升序排序,将最小金额留在顶部附近,因此第一个被找到VLOOKUP
.
FILTER
然后 returns YEAR
、MONTH
、DAY
和金额仅适用于查找 date-converted-to-first-of-month 的行SORT
数组中的行 returns 与列 E 中为该行列出的数量相同。
另一种方法是使用如下查询
=query({ARRAYFORMULA(year(D:D)),ARRAYFORMULA(month(D:D)),E:E},"select Col1,min(Col3) where Col1>=1900 group by Col1 pivot Col2 label Col1 'year/month'")
说明
先把日期改成年月
也许还有另一种方法:
This sample spreadsheet 是专门为这个问题创建的。
您会在其中找到这个公式,该公式仅给出每月一个日期作为该月的最小日期。
=SORTN(SORT(ARRAY_CONSTRAIN({1*TEXT(D:D,{"mmmyyyy","m/d/yy"}),E:E},COUNTA(D:D),3),3,1),9^9,2,1,1)