在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)))
我有一份 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)))