我的组织使用 Excel 2016,但计划很快取消使用 VBA 宏或用户定义公式的功能。我们正在尝试寻找适应这一变化的方法。
问题:
我们可以用其他公式替换下面的用户定义公式吗?
用户定义公式:FYFinder
FYFinder 接受对日期的单元格引用(或尝试将数字引用转换为 Excel 日期)并提供该日期的财政年度。新的财政年度从每年的 10 月 1 日开始。因此,对于 2025 年,从 2025 年 1 月 1 日到 2025 年 9 月 30 日的所有日子都属于 2025 财政年度,而从 2025 年 10 月 1 日到 2025 年 12 月 31 日的所有日子都属于 2026 财政年度。日期时间值的时间部分将被忽略,非数字输入会产生错误
例如,给定以下输入,输出为:
- A1:= 11/20/2024 ; FYFinder(A1) = 2025
- A2:= 2017 年 9 月 30 日; FYFinder(A2) = 2017
- A3:= 2017 年 10 月 1 日; FYFinder(A3) = 2018
- A4:= 1 ;FYFinder(A4)= 1900
- A5:= 11/20/2024 5:15 下午 ; FYFinder(A5) = 2025
- A6:= "11/20/2024" ; FYFinder(A6) = #VALUE!
- A7:=“StackOverflow;FYFinder(A7)=#VALUE!
请注意,A4 演示了该函数将所有数字视为日期,而非数字会产生错误
可以使用以下公式轻松复制此功能:
=IF(MONTH(A1)>=10,1+YEAR(A1),YEAR(A1))
或者简洁版本
=--(MONTH(A1)>=10)+YEAR(A1)
那么,鉴于这些信息,我们可以做些什么来在没有 VBA 的情况下复制该功能?我尝试使用自定义命名范围,但我看到的示例无法引用特定单元格。例如:
=--(MONTH(TODAY())>=10)+YEAR(TODAY())
仅适用于今天。或者=--(MONTH(A1)>=10)+YEAR(A1)
仅引用单元格 A1
(我的组织计划很快升级到 Excel 365,因此如果答案来自该版本,那么它可以帮助我们更快地采用它。
最新版本的 Excel 中有一个称为函数的功能(于
LAMBDA
2020 年 12 月推出)。这些也可以设置为已定义的名称(从功能区中的“公式”选项卡中)因此,您的 UDF 可以被一个定义的名称(也称为)替换
FYFinder
,并在“引用”字段中使用以下公式:serial_number
(选择变量名来匹配现有的日期函数,例如WEEKDAY
,,,等等DAY
)YEAR
同时,您也可以使用相对引用。
假设您的工作表名为“Sheet1”。如果您选择单元格 B1(注意,这一步非常重要),并创建一个名为 的新定义名称
FYRelative
,那么您可以为其赋予以下“引用”:您不必将其用作公式,而是将其用作常量,例如
这将始终返回左侧单元格的FYFinder 值,从长远来看,这会大大降低其实用性。