如何根据条件创建不同的日期范围?

时间:2020-10-19 17:31:23

标签: excel range criteria

我有一个带有两个活动列的表。在A列中,我有2012年1月1日到2019年12月31日之间的所有日期。在B列中,我有一个对应的名称。例如:

[enter image description here

我想根据条件创建范围,例如:

enter image description here

窍门是,这应该按日历年完成,这意味着在8年期间,我应该有8组3列(从/到/名称),每个日历年一组。如果一个范围涵盖两年(例如,2012年11月1日至2013年2月1日),则2012年的最后一行应为 2012-11-01至2012-12-31 而2013年的第一行将显示 2013-01-01至2013-02-01

我设法将范围分开,但是由于某些原因,我无法继续进行每个日历年的操作。有办法吗?

1 个答案:

答案 0 :(得分:0)

让我们假设您要放置从G列开始的8组3列,并且您在D:F范围内的列表在第1行具有标题,在第2行开始具有数据。在单元格G1中写下您的第一年(2012),在单元格H1中“发件人”,在单元格I1中“收件人”,并在单元格J1中“名称”。

现在在H2单元格中写入以下公式:

=IF(IF(OR(IF(AND($E2>=DATE(G$1,1,1),$D2<=DATE(G$1,12,31)),1,0),IF(AND($D2>=DATE(G$1,1,1),$E2<=DATE(G$1,12,31)),1,0)),1,0),MAX($D2,DATE(G$1,1,1)),"")

在I2单元格中编写以下公式:

=IF(IF(OR(IF(AND($E2>=DATE(G$1,1,1),$D2<=DATE(G$1,12,31)),1,0),IF(AND($D2>=DATE(G$1,1,1),$E2<=DATE(G$1,12,31)),1,0)),1,0),MIN($E2,DATE(G$1,12,31)),"")

在单元格J2中编写以下公式:

=IF(AND(H2<>"",I2<>""),F2,"")

根据需要将其中的3个一直拖到最下方。然后,您可以复制G:J范围,并在需要时随时粘贴在其旁边。只需在左上方的单元格中更改年份,就可以解决问题。

报告任何问题或遇到的错误。如果根据您的判断,此答案(或其他答案)是解决问题的最佳方法,那么您有幸接受(link)。