我有一个包含两列的 Excel 电子表格,第一列包含日期,第二列包含值。这些日期跨越了好几年。我想编写一个函数来检索每年的最大值。
例如,在以下数据集中: 2009 年 6 月 3 日 3 2009 年 6 月 5 日 5 2010 年 1 月 1 日 7 2010 年 7 月 7 日 1 2013 年 4 月 1 日 12 2013 年 5 月 2 日 77
2009 年的函数将返回值 3 2010 年的函数将返回值 7 2013 年的函数将返回值 77
所有日期都在 A 列中 所有值都在 E 列中 在 J 列中,我列出了所需的年份,即 J1 = 2009 年、J2 = 2010 年、J3 = 2011 年等。
每年的函数位于与 J 列中的年份相对应的 K 列中,即 2009 年的最大值位于单元格 K1 中,2010 年的最大值位于单元格 K2 中,依此类推。
我相信这个函数应该类似于: =MAX(某种类型的函数,可以给我每年的日期范围)
感谢大家的帮助
您可以使用:
=MAX(IF(YEAR($A$2:$A$9)=J1,$E$2:$E$9,0))
让我们考虑这个例子:
+---+------------+------+-------+-------------+
| | A | B | C | D |
+---+------------+------+-------+-------------+
| 1 | Date | Year | Value | Max of year |
| 2 | 03/06/2009 | 2009 | 3 | 5 |
| 3 | 05/06/2009 | 2009 | 5 | 5 |
| 4 | 01/01/2010 | 2010 | 7 | 7 |
| 5 | 07/07/2010 | 2010 | 1 | 7 |
| 6 | 01/04/2013 | 2013 | 12 | 77 |
| 7 | 02/05/2013 | 2013 | 77 | 77 |
+---+------------+------+-------+-------------+
你有两个选择。
第一个解决方案(最简单)
添加一个名为 YEAR 的列,在其中计算 A 列每个单元格的年份。然后使用 C 列的最大值构建一个数据透视表。
第二个解决方案(最难)
使用矩阵函数。添加包含计算年份的 B 列。然后在单元格 D2 中写入以下内容:
=MAX(IF(B:B=B2,C:C))
,然后按 CTRL + SHIFT + ENTER。
该公式将被转换(转换为矩阵函数),如={=MAX(SE(B:B=B7;C:C))}
。现在,您可以将单元格 D2 拖动到列的末尾(示例中的 D7)。
您还可以将我的第二个解决方案与 YEAR 函数结合使用,如@Yass 所回答。
我自己设法回答了这个问题。如果我将与日期和值对应的列定义为数组,那么我可以使用以下函数:
=MAX(IF(Transaction_Date<=DATE(J1,12,31),IF(Transaction_Date>=DATE(J1,1,1),Account_Balance)))