在Google Sheets中,有没有办法将每年列出的最后一个月的值输出到table跨越多年的月度数据中?

In Google Sheets, is there a way to output the values of the last month listed in each year in a table of monthly data spanning many years?

我有一份 table 原始财务数据,告诉我某个月末帐户的价值(以日期格式 MM/1/YY 表示以进行标准化)。这个 table 中有多年的数据价值,所以我可能有这样的东西(请忽略确切的值,它们只是占位符):

1/1/18  3
2/1/18  
3/1/18  
4/1/18  
5/1/18  
6/1/18  
7/1/18  3
8/1/18  43
9/1/18  
10/1/18 
11/1/18 3
12/1/18 
1/1/19  3
2/1/19  3
3/1/19  
4/1/19  3

我想使用这些数据创建一个数组(或者理想情况下是一个数据透视表),以便它总结给定年份(包括部分年份)的最后一个值。

所以对于上面的内容,它会输出:

12/1/18 
4/1/19 3

甚至更好...清理格式以将其更改为全年:

2018 
2019 3

当我尝试旋转原始数据时,"Summarize By" 选项中的 none 似乎产生了所需的输出。

原始数据 table 的长度预计会随着时间的推移而增加,因此理想的解决方案无需手动更新即可保持最新。因此,随着 table 增长到 2020 年,它只会将该年的最近一个月的值添加到输出的末尾。

在 Google 表格中,您可以使用 Sortn 执行这些操作,使用选项 2(忽略重复项)按年份排序:

=sortn(sort(filter({year(A:A),A:B},A:A<>""),2,false),999,2,1,true)

数据预先按日期降序排列(使用 sort),因此 sortn 会挑选出每年日期最近的行。

步骤分解

(1) 使用 {} 表示法将年份添加到数据中。请注意,这会将空白单元格转换为 1899,必须将其删除:

{year(A:A),A:B}

(2) 过滤掉空白单元格:

filter({year(A:A),A:B},A:A<>"")

(3) 按日期降序排列:

sort(filter({year(A:A),A:B},A:A<>""),2,false)

(4) 按年份升序排序,但删除除每年第一个(最近)以外的所有日期:

=sortn(sort(filter({year(A:A),A:B},A:A<>""),2,false),999,2,1,true)

=ARRAYFORMULA(IFERROR(VLOOKUP(UNIQUE(YEAR(INDIRECT("A1:A"&COUNTA(A1:A)))), 
 QUERY(SORT({A1:A,B1:B}, 1,0,2,0), "select year(Col1),Col2"), {1,2}, 0)))