Excel-给定开始日期和结束日期,创建两者之间的日期数组

时间:2015-08-10 09:58:56

标签: excel

我有一些ID的开始日期和结束日期,

数据集1

ID          Trans_Date     Action
1234567890  01-Jan-2012    Active
1234567890  05-Jan-2012    Dc
1234567890  06-Jan-2012    Active
1234567890  12-Jan-2012     Dc
1234567890  15-Jan-2012    Active

我需要扩展下面的设置,

必填数据

ID          Trans_Date  Action
1234567890  01-Jan-12   Active
1234567890  02-Jan-12   Active
1234567890  03-Jan-12   Active
1234567890  04-Jan-12   Active
1234567890  05-Jan-12   DC
1234567890  06-Jan-12   Active
1234567890  07-Jan-12   Active
1234567890  08-Jan-12   Active
1234567890  09-Jan-12   Active
1234567890  10-Jan-12   Active
1234567890  11-Jan-12   Active
1234567890  12-Jan-12   DC
1234567890  13-Jan-12   DC
1234567890  14-Jan-12   DC
1234567890  15-Jan-12   Active

目前我正在从事体力劳动,是否有公式或VBA代码?

请参阅'SO'上提出的问题

给定开始日期和结束日期,创建两者之间的日期数组。

我需要在Excel上使用相同的功能。

1 个答案:

答案 0 :(得分:0)

您可以使用公式在两个备用列(例如D和E)中开发列表。如果您的第一个列表位于A-C列: -

(1)将第一个日期(C2)复制到D2

(2)将此公式放入D3并下拉: -

=IF(D2>=MAX(B$2:B$6),"",D2+1)

(3)将此公式放入E2并下拉: -

=IF(D2="","",INDEX(C$2:C$6,MATCH(D2,B$2:B$6,1)))

这可以针对不同的ID号进行扩展: -

(1)将第一个ID号复制到D2

(2)将此公式放在D3

=IF(COUNTIF(D$1:D2,D2)<(MAX(IF(A$2:A$20=D2,B$2:B$20))-MIN(IF(A$2:A$20=D2,B$2:B$20))+1),
   D2,
   INDEX($A$2:$A$20, MATCH(0, COUNTIF($D$1:D2, $A$2:$A$20), 0)))

(3)将此公式放在E2中: -

=MIN(IF(A$2:A$20=D2,B$2:B$20))+COUNTIF(D$1:D1,D2)

(4)将此公式放在F2中: -

=INDEX(C$2:C$20,MATCH(E2,IF(A$2:A$20=D2,B$2:B$20),1))

所有这些都是数组公式,必须使用 Ctrl Shift 输入

输入

enter image description here

但如果应用于多行数据,可能会很慢。