有没有一种方法可以在不使用VBA的情况下在Excel中创建简单的自定义公式?

问题描述 投票:0回答:1

我的组织使用 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 excel-formula excel-2016
1个回答
0
投票

最新版本的 Excel 有一种称为 a

LAMBDA
函数 的功能。 这些也可以设置为定义名称(从功能区的“公式”选项卡)

因此,您的 UDF 可以替换为已定义名称(也称为

FYFinder
),并在“引用到”字段中使用以下公式:

=LAMBDA(serial_number, --(MONTH(serial_number)>=10)+YEAR(serial_number))

(选择变量名称

serial_number
是为了匹配现有的日期函数,例如
WEEKDAY
DAY
YEAR
等)

© www.soinside.com 2019 - 2024. All rights reserved.