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

How to create different date ranges based on criteria?

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

[ 等等

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

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

我设法分离了范围,但出于某种原因,我无法更进一步,无法为每个日历年都这样做。有办法吗?

假设您要放置从 G 列开始的 8 组 3 列,并且您在 D:F 范围内的列表在第 1 行中有 headers,在第 2 行中有数据。在单元格 G1 中写下你的第一年 (2012),在单元格 H1 中写下“从”,在单元格 I1 中写“到”,在单元格 J1 中写“姓名”。

现在在单元格 H2 中写下这个公式:

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

在单元格 I2 中写入此公式:

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

在单元格 J2 中写入此公式:

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

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

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