Формула непрерывного подсчета месяцев в Excel - PullRequest
1 голос
/ 29 апреля 2019

Я хочу сделать список продолжений месяца, начиная с определенной даты на английском языке.Допустим, моя дата 29.4.2019.Я хотел бы, чтобы формула Excel отображала месяцы на английском языке, начиная с этой даты, поэтому мой список будет выглядеть (опускаясь):

May
July
August
September
October
November
December
January
February
etc...

Я пробовал эту формулу, но она заканчивается в декабре, также янеобходимо ввести +1, +2, +3 вручную:

=CHOOSE(MONTH(A1)+1;"January";"February";"March";"April";"May";"July";"August";"September";"October";"November";"December")

Также проблема в том, что я использую Finnish Excel, поэтому функция должна быть =TEXT(MONTH(A1);"kkkk") вместо =TEXT(MONTH(A1);"mmmm"), если я хочу использовать более простую версию с =TEXTфункция.Однако это не будет работать после открытия Excel в английской версии Excel, так как он не распознает «kkkk» внутри формулы и выдаст ошибку.

У меня есть VBA для преобразования в международный формат, но, похоже, это тоже не работает (https://superuser.com/questions/730371).

Public Function FMT$(ByVal Value, ByVal strFormat)
    FMT = VBA.Format$(Value, strFormat)
End Function

РЕДАКТИРОВАТЬ:

Хорошо. Это была глупая ошибка ... Я пропустил "июнь" в своем списке. Эта функция, кажется, работает сейчас:

=CHOOSE(MONTH(A1)+1;"January";"February";"March";"April";"May";"June";"July";"August";"September";"October";"November";"December")

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

С наименьшим возможным изменением от того, как работает ваш собственный код:

=CHOOSE(MOD(MONTH($A$1)+Row()-2, 12)+1, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

Во-первых, +Row()-2 означает, что вам больше не нужно вводить +1, +2, +3 вручную - он будет использовать номер строки, в которой находится ячейка. (В зависимости от того, с какой строки начинается ваш список, вам может потребоваться настроить -2)

Далее мы используем Mod(<adjusted month>,12) - это означает, что каждый раз, когда мы достигаем 12, он сбрасывается обратно в 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, ...

Наконец, добавьте 1.

Если мы начнем в декабре, а формула будет в строке 2, тогда мы получим MOD(Month("2018-12-01")+Row()-2, 12)+1, который станет MOD(12 + 2 - 2, 12) + 1 или MOD(12, 12) + 1 и, наконец, 0 + 1.
Следующий элемент будет в строке 3, поэтому MOD(Month("2018-12-01")+Row()-2, 12)+1 становится MOD(12 + 3 - 2, 12) + 1 или MOD(13, 12) + 1 и, наконец, 1 + 1 для февраля.

1 голос
/ 29 апреля 2019

Полагаю, вы можете попробовать следующее:

=IF(C1="";TEXT($A$1;"kkkk");TEXT(DATE(YEAR($A$1);1+MONTH("1-"&C1&"-"&YEAR($A$1));1);"kkkk"))

enter image description here

В приведенной выше формуле в основном используются две ветви IF (вам может потребоваться выбрать более подходящее условие в зависимости от макета вашего листа Excel и того, где вам нужны результаты, но не зная этого, это лучший Могу предложить).

Так что, в принципе, если это первая ячейка, ячейка прямо над ней будет пустой, поэтому формула будет просто TEXT($A$1,"kkkk"). Если есть значение, то нам нужно добавить один месяц, и чтобы сделать это как можно более точным, я бы использовал DATE(YEAR($A$1),1+MONTH("1-"&C1&"-"&YEAR($A$1)),1), который в основном принимает год даты, указанной в A1, месяц, следующий за предыдущим месяцем, и 1 как дата Excel может понимать формат d-mmmm-yyyy как дату, поэтому я этим пользуюсь.


Не используется TEXT:

=CHOOSE(IF(C1="";MONTH($A$1);MOD(MONTH("1-"&C1&"-"&YEAR($A$1));12)+1);"January";"February";"March";"April";"May";"June";"July";"August";"September";"October";"November";"December")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...