确定第一个&财务年度的最后日期来自随机日期范围列表

时间:2018-06-05 17:31:25

标签: vba date-range

我需要找到First&从随机日期列表开始的财政年度的最后日期。

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: 对于任何风云,获得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)

但它只发现2016年4月1日或2017年3月1日

- 方法#2:

试图使用MIN& MAX功能但返回Min&整个随机日期列表的最大值

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

非VBA方法:您可以使用--linkIFMIN创建一个数组公式来执行此操作(使用 Ctrl + <输入kbd> Shift + 输入)。

由于您的FY从4月1日开始到次年的3月31日结束,我添加了两个帮助列:&#34; BEGINS&#34;和&#34; ENDS&#34;,以及相关日期。

table

&#34; FIRST DATE&#34;的公式是MAX,其中{=MIN(IF($E$1:$E$13>=B16,$E$1:$E$13))}是您的日期列表,$E$1:$E$13是&#34;开始&#34;日期。

同样,&#34;最后日期&#34;是B16,其中{=MAX(IF($E$1:$E$13<=C16,$E$1:$E$13))}是&#34;结束&#34;日期。

这是有效的,因为C16会返回&#34;已过滤&#34;然后,您可以找到IF($E1:$E$13<=C16...MAX的日期数组。