基于数字单元输入更简单地拼出月和日的方法

时间:2013-12-20 18:14:31

标签: excel excel-formula

在我的一个电子表格的标题中,我必须输入“对于X个月结束的MMMMMM DD,YYYY”,其中X是用英语拼写的月份数(I.E.'12,12')。

有问题的日期始终是该期间的最后一天。句点以数字形式在单元格中定义(用于公式)。例如,10月是第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只是英语(One,Two,...)中数字1-12的列表

PeriodMonths是月份名称偏移10个月的列表(因此1 = 10月)

CalendarMonths是正常顺序的月份名称列表(因此1 = 1月)

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

有更简单的方法吗?感觉应该有。另外,我不能使用VBA。这是一本无宏的工作簿。

2 个答案:

答案 0 :(得分:0)

您可以使用custom format,只需输入日期即可。右键单击该单元格,选择“设置单元格格式...”并填写此自定义格式:

"For the month ended" mmmm dd, yyyy

enter image description here

您当然可以使用较短版本的公式来计算日期。

答案 1 :(得分:0)

我很同意你的老板。 247字符公式似乎不太适合所需的结果。

我建议使用相同(18个字符)公式的两个版本:

=VLOOKUP(A1,T,2,0)  

并再次将2替换为3(其中A1是输入的月份数字)。

保留查找表(由我命名为T - 不是最佳做法,而是简短!)并将其扩展为包括正确对齐的月末日期(计算,如果您愿意)(因此10月是在同一行(或列,如果您更喜欢HLOOKUP而不是VLOOKUP)为1one

然而,绊脚石可能是我会使用四个单元格作为输出,第一个使用For the第三个单元格使用Months Ended(这些不会改变,所以为什么要将它们包含在公式中? ),另外两个具有LOOKUP公式和合适的格式。

如果您必须在一个单元格中拥有所有这些(并且不介意“一个月”的奇怪之处),则可能首选以下内容:

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

令人遗憾的是很长,但至少要长得多。