Excel-给定开始date和结束date,在两者之间创build一个数组

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

数据集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”上提出的问题

给定开始date和结束date,在两者之间创build一个数组。

我需要在Excel中相同。

您可以使用公式在两个备用列(例如D和E)中开发列表。 如果你的第一个列表在列AC: –

(1)将第一个date(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进行input

在这里输入图像说明

但如果应用于许多行数据可能会变慢。