Автоматическое обновление переменной финансового года ежегодно

#excel #vba

#excel #vba

Вопрос:

У меня есть переменная, которая сохраняет дату начала текущего финансового года, который начинается с 1 апреля, CurrentFY = #1/4/2020# в #d/m/yyyy# формате

Это означает, что когда наступит 1 апреля 2021 года, я должен вручную обновить эту переменную до CurrentFY = #1/4/2021# . Есть ли способ автоматически обновлять эту переменную ежегодно?

Ответ №1:

Нет необходимости что-либо «обновлять», так как вы можете создавать свои CurrentFY динамически:

 CurrentFY = DateSerial(Year(DateAdd("m", -3, Date)), 4, 1)
 

Ответ №2:

Вы можете создать строку динамически, а затем преобразовать ее в дату следующим образом:

 CurrentFY = CDate("1/4/" amp; Year(Date))
 

Таким образом, каждый раз, когда выполняется код, Year (Дата) дает вам год текущей даты.

Комментарии:

1. Это вернет 2021-04-04 в первом квартале 2021 года, в то время как он должен вернуть 2020-04-01 .

2. @Gustav Я хотел бы узнать немного больше из вашего примера. Можете ли вы уточнить, как строка «1/4/2021» возвращает «4/4/2021» в первом квартале 2021 года? Похоже, что OP находится в стране, где дата отформатирована в формате dd / mm / yyyy, т.Е. 1/4 — 1 апреля.

3. Да, мы используем тот же формат здесь, и ваше выражение правильно возвращает апрель здесь, но, скажем, в США оно вернет январь. Этого можно избежать, используя DateSerial с его конкретными параметрами. Что касается года, то ваше выражение привязано к календарному году, где оно должно быть смещено на четверть.

4. ДА. Как я уже отмечал, сегодня он вернет 2021-04-01 , а не 2020-04-01 , который является текущим финансовым годом, и он не изменится при достижении апреля. В качестве альтернативы, поскольку спрашивающий принял ответ, вопрос следует перефразировать.

5. @Gustav ах, да, теперь я понял. Спасибо.