Excel中的连续月份计数公式

时间:2019-04-29 06:16:30

标签: excel excel-formula

我想从特定日期开始用英语制作连续月份列表。可以说我的约会日期是29.4.2019。我希望Excel公式从该日期开始以英语显示月份,所以我的列表看起来像(通过下拉列表):

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

我尝试过此公式,但是它在12月结束,还必须手动输入+1, +2, +3

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

另外,问题是我使用芬兰语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 个答案:

答案 0 :(得分:1)

我想您可以尝试以下操作:

=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")

答案 1 :(得分:1)

对您自己的代码的工作方式进行尽可能小的更改:

=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。

如果我们从12月开始,并且公式在第2行中,那么我们将得到MOD(Month("2018-12-01")+Row()-2, 12)+1,它变成MOD(12 + 2 - 2, 12) + 1MOD(12, 12) + 1,最后是0 + 1
下一项将在第3行上,因此MOD(Month("2018-12-01")+Row()-2, 12)+1变成MOD(12 + 3 - 2, 12) + 1MOD(13, 12) + 1,最后变成1 + 1,进入2月。