在我的一个电子表格的标题中,我必须输入“对于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。这是一本无宏的工作簿。
答案 0 :(得分:0)
您可以使用custom format,只需输入日期即可。右键单击该单元格,选择“设置单元格格式...”并填写此自定义格式:
"For the month ended" mmmm dd, yyyy
您当然可以使用较短版本的公式来计算日期。
答案 1 :(得分:0)
我很同意你的老板。 247字符公式似乎不太适合所需的结果。
我建议使用相同(18个字符)公式的两个版本:
=VLOOKUP(A1,T,2,0)
并再次将2
替换为3
(其中A1是输入的月份数字)。
保留查找表(由我命名为T
- 不是最佳做法,而是简短!)并将其扩展为包括正确对齐的月末日期(计算,如果您愿意)(因此10月是在同一行(或列,如果您更喜欢HLOOKUP而不是VLOOKUP)为1
和one
。
然而,绊脚石可能是我会使用四个单元格作为输出,第一个使用For the
第三个单元格使用Months Ended
(这些不会改变,所以为什么要将它们包含在公式中? ),另外两个具有LOOKUP公式和合适的格式。
如果您必须在一个单元格中拥有所有这些(并且不介意“一个月”的奇怪之处),则可能首选以下内容:
="For the "&VLOOKUP(A1,T,2,0)&" Months Ended " &TEXT(VLOOKUP(A1,T,3,0),"mmmm dd, yyy")
令人遗憾的是很长,但至少要长得多。