从随机日期范围列表中识别财政年度的第一个和最后一个日期

Identify first & last date of Financial Year from list of random date range

我需要从随机日期列表中找到财政年度的第一个和最后一个日期。

Example:

Dates:
28-Mar-2015
01-Apr-2016
05-Apr-2016
.
.
.
30-Mar-2016
31-Mar-2016
03-Apr-2017
04-Apr-2017
.
.
.
26-Mar-2018
29-Mar-2018
05-Apr-2018
07-Apr-2018
.
.
10-May-2018
.
.
Till Date

Result:
FY 16-17       -> First date = 01-Apr-2016 & Last Date = 31-Mar-2017
FY 17-18       -> First date = 03-Apr-2017 & Last Date = 29-Mar-2018
FY 18-19 (Current) -> First date = 05-Apr-2018 & Last Date = Till date (Last possible date)

- 方法 #1: 对于任何 FY,获取 4 月 16 日和 3 月 17 日的硬编码日期,但这无效

Set fystart = Worksheets("Data Sheet").Range("E:E").Find(CDate("Apr-2016"), Lookat:=xlWhole)
Set fyend = Worksheets("Data Sheet").Range("E:E").Find(CDate("Mar-2017"), searchdirection:=xlPrevious, Lookat:=xlWhole)

但它只能找到 01-Apr-2016 或 01-Mar-2017

- 方法 #2:

尝试使用 MIN 和 MAX 函数,但它 returns 整个随机日期列表的最小值和最大值

感谢任何帮助。

非VBA方法:您可以使用IFMINMAX创建数组公式来执行此操作(使用[=34=输入) ]Ctrl + Shift + Enter).

由于您的财年从 4 月 1 日开始到次年 3 月 31 日结束,因此我添加了两个辅助列:"BEGINS" 和 "ENDS",相关日期如下。

"FIRST DATE" 的公式是 {=MIN(IF($E:$E>=B16,$E:$E))},其中 $E:$E 是您的日期列表,B16 是 "Begins" 日期。

同样,"LAST DATE" 是 {=MAX(IF($E:$E<=C16,$E:$E))},其中 C16 是 "Ends" 日期。

这是有效的,因为 IF($E1:$E<=C16... returns 一个 "filtered" 日期数组,然后您可以找到 MAXMIN of.