我想从特定日期开始用英语制作连续月份列表。可以说我的约会日期是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")
答案 0 :(得分:1)
我想您可以尝试以下操作:
=IF(C1="";TEXT($A$1;"kkkk");TEXT(DATE(YEAR($A$1);1+MONTH("1-"&C1&"-"&YEAR($A$1));1);"kkkk"))
上面的公式基本上使用了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) + 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
,进入2月。