根据数字单元格input更容易地拼出月份和date

在我的一个电子表格的标题中,我必须键入“为X个月结束MMMMMM DD,YYYY”,其中X是用英语拼写的月份编号(IE“十二”)。

相关date始终是该期间的最后一天。 这个时期是以数字forms在单元格中定义的(用于公式)。 例如,十月是期间1.所以我做了自动化这是以下怪异公式使用工作簿名称和3个命名范围作为“助手”:

="For the " & INDEX(MonthNumbers,MATCH(INDEX(PeriodMonths,'Franchise Fees'!U2,),CalendarMonths,0)) & " Months Ended " & TEXT(DATE(MID(CELL("Filename",A1),SEARCH("_",CELL("Filename",A1))-4,4),MOD('Franchise Fees'!U2+10,12),1)-1,"MMMMMMMMM DD, YYYY") 

MonthNumbers只是英文数字1-12的列表(One,Two,…)

PeriodMonths是月份名称的偏移10个月(所以1 =十月)

CalendarMonths是按正常顺序的月份名称列表(所以1 = 1)

现在,我为这个公式感到骄傲,但是一旦我的老板看到了,她就要翻身了(她讨厌长长的公式)。 所以我需要问:

有一个更简单的方法来做到这一点? 感觉应该有。 另外,我不能使用VBA。 这是一个无macros观的工作手册。

您可以使用自定义格式 ,只需inputdate。 右键单击单元格,select格式单元格…并填写此自定义格式:

 "For the month ended" mmmm dd, yyyy 

在这里输入图像说明

您当然可以使用一个较短版本的公式来计算date。

我赞同你的老板。 247个字符的公式似乎并不特别适合所需的结果。

我会build议像相同(18个字符)公式的两个版本:

 =VLOOKUP(A1,T,2,0) 

再次用2replace3 (其中A1是input的月份编号)。

保持查找表(我的名字是T不是最好的做法,但是很简单!),并且把它延伸到包括月底date(如果你愿意,计算出来)正确alignment(所以十月份在同一行更喜欢HLOOKUP而不是VLOOKUP)为1one

然而,绊脚石可能是我将使用四个单元格的输出,第一个与第Months Ended (这些不会改变,所以为什么包括在公式?),其他两个与LOOKUP公式和适当的格式。

如果你必须把所有这一切都放在一个单元格中(而且不介意“一个月”的怪异),那么以下可能是首选的:

 ="For the "&VLOOKUP(A1,T,2,0)&" Months Ended " &TEXT(VLOOKUP(A1,T,3,0),"mmmm dd, yyy") 

这也是令人遗憾的长,但至less是不太长。