Anita的工作表包含超过10,000行。每行代表一个单独的合同。每个合同都有一个开始日期(A列)和一个结束日期(B列)。她需要一种在C,D,E等列中列出的方法。合同涵盖的各个月。例如,如果A列包含2009年7月1日,B列包含2009年9月30日,则她需要C列包含7月09日,D列包含8月9日,E列包含9月09日。无论使用什么公式,都需要容纳合同长度可能会完全不同。

有几种方法可以完成此任务。可以使用一些中间列来指定诸如每个合约的开始月份和月数之类的内容,但是事实证明,这些中间列不是必需的。例如,假设您的合同从第2行开始,则可以在单元格C2中放置以下公式:

=TEXT(A2,"mmm yy")

然后,从单元格D2开始,您可以放置​​以下公式:

=IF(DATE(YEAR($A2),MONTH($A2)+COLUMNS($D2:D2), DAY($A2))>$B2,"",TEXT(DATE(YEAR($A2),MONTH($A2)

+COLUMNS($D2:D2),DAY($A2)),"mmm yy"))

这是一个公式,它使用包含该公式的单元格的位置以及合同的开始日期来基本上计算出与该开始月份的抵消月份。该公式可以向右复制(列E,F,G等),以显示所有月份和年份。

该公式的一个缺点是,如果该月的合同结束日期早于合同开始日期,则不会显示最后一个月。因此,如果合同从2012年6月12日开始到2013年2月5日结束,则公式不会显示最后一个月(2月)。您可以改为在单元格C2中使用以下公式,并根据需要将其复制到右侧:

=IF(DATE(YEAR($A2),MONTH($A2)+COLUMN()-2,0)

>DATE(YEAR($A2),MONTH($B2)+1,0),"",TEXT(DATE (YEAR($A2),MONTH($A2)+COLUMN()-2,0),"mmm yy"))

该公式还依赖于其所在的列,并使用它们来计算与合同开始日期的偏移量。无论合同开始日期和结束日期之间的关系如何,该公式都可以正常工作。

如果您不想依靠列定位,则可以采用另一种方法。将以下公式放在单元格C2中:

=(A2)

然后,在单元格D2中放置以下公式:

=IF($B2>C2,EOMONTH(C2,1),"")

将D2中的公式复制到所需数量的右侧单元格,然后将所有这些单元格(包括C2和D2)格式化为仅显示月份和年份的日期。该公式将查看B2(合同终止日期),看是否大于C2。如果是,则该公式将返回序列中下个月最后一天的序列号。如果不是,则返回空白(“”)。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(5406)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到此技巧的版本:

链接:/ excelribbon-Determining_Month_Names_for_a_Range_of_Dates [确定日期范围内的月份名称]。