Excel函数,如果行在2个日期范围内,则复制行

时间:2015-10-26 14:32:11

标签: excel indexing excel-formula

因此,在Excel工作表的顶部,我有2个单元格,A2B2,人们可以在其中输入开始和结束日期。

在单独的表格中,我在列AB中列出了大量的开始和结束日期,以及D列到{G列中每个“事件”的相应数据{1}}。我需要我的函数来复制开始日期在两个指定日期之间的所有行,并将数据复制到第一个工作表,在单元格A4 - G4A100 - G100中。 (我只选择100作为一个大数字,以确保放置数据的区域足够大)

我猜这个我需要的功能包括INDEX功能,但我只知道如何使用它来一次查找一个数据单元,而不是如何复制整个单元格范围。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

无需帮助列。

将此公式输入单元格A4:

=IFERROR(INDEX(data!D$2:D$9999,SMALL(IF((data!$A$2:$A$9999>=$A$2)*(data!$A$2:$A$9999<=$B$2),ROW(data!$D$2:$D$9999),9E+99),ROW(1:1))-1),"")
  

这是一个数组公式,必须使用 Ctrl + Shift + Enter 确认。

现在将公式复制到范围B4:D4。

现在将A4:D4复制到A5:D100范围内。

那就是它。

答案 1 :(得分:0)

我们假设数据表中的C列是空白的,可以自由添加公式。

我们还假设数据从第2行开始。

然后可以将以下公式放入C2&amp;复制下来:

=IF(AND(A2>=Sheet1!$A$2,B2<=Sheet1!$B$2),C1+1,C1)

基本上它是说如果当前记录的开始日期大于或等于用户正在查找的日期,并且结束日期同样在范围内,则重复记录,否则不重复。

此时用户工作表可以有一个简单的VlookUp,如下所示:

在D1中:=VLOOKUP(ROW($A1),Sheet2!$C:$G,COLUMN(B$1),0)

将其复制到G并向下复制你想要的很多行。