【问题标题】:Identify first & last date of Financial Year from list of random date range从随机日期范围列表中识别财政年度的第一个和最后一个日期
【发布时间】:2018-06-05 17:31:25
【问题描述】:

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

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,获取 Apr-16 和 Mar-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 函数,但它返回整个随机日期列表的 Min & Max

感谢任何帮助。

【问题讨论】:

  • 当您说财政年度的第一个和最后一个日期时,您实际上是指列表中最早和最新的日期吗?如果不是,您期望正确的结果是什么?

标签: vba date-range


【解决方案1】:

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

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

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

同样,“LAST DATE”是{=MAX(IF($E$1:$E$13<=C16,$E$1:$E$13))},其中C16 是“结束”日期。

这是有效的,因为IF($E1:$E$13<=C16... 返回一个“过滤”的日期数组,然后您可以找到其中的MAXMIN

【讨论】:

  • 太棒了……效果很好。我需要 VB 代码,但我可以围绕它构建一些代码....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
相关资源
最近更新 更多