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 YEARMONTHDAY 和金额仅适用于查找 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)