#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 ах, да, теперь я понял. Спасибо.