Excel - 列出位于两个日期之间的所有行的数据,同时忽略空白条目

时间:2017-01-20 13:15:03

标签: excel indexing

我无法理解返回两个特定日期之间excel中所有行的数据列表所需的公式。

Sheet1包含以下数据:

Date    Region  Reference
01/01/2015  B   4458
01/02/2015  B   6635
01/02/2016  A   3175
01/03/2016  C   2458
01/03/2016  A   2194
01/04/2016  A   3594
01/04/2016  C   
01/05/2016  C   1654
12/05/2016  B   3648
01/06/2016  B   
01/06/2016  B   3296

在Sheet2中,我在单元格C2中指定开始日期,在单元格C3中指定结束日期。

我想在sheet2中显示一个列表,它列出了sheet1中属于该日期范围的所有参考号。但我也希望它忽略任何空白且不包含参考编号的单元格。

我已经尝试了一些方法来实现这一点,我认为使用INDEX函数的数组公式可能是最好的选择,但我很难让日期范围方面起作用。< / p>

有人能帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

我建议您将数据格式化为表格,如果还没有,因为它使索引函数更容易阅读。

下面的公式应该符合您的要求。 if语句中的*就像“和”。公式末尾附近的-4是源表和它所在表单顶部之间的行数。公式末尾的最后一个是您希望从vlookup中获取数据的列。记得使用 SHIFT + CTRL + ENTER 使其成为一个数组公式。

=IFERROR(INDEX(Table1,SMALL(IF((Table1[Date]>=$C$2)*(Table1[Date]<=$C$3)*(Table1[Reference]<>""),ROW(Table1)-4),ROW(1:1)),1),"")

如果您不想格式化为表

,则为公式
=IFERROR(INDEX(Sheet2!$C$5:$E$15,SMALL(IF((Sheet2!$C$5:$C$15>=$C$2)*(Sheet2!$C$5:$C$15<=$C$3)*(Sheet2!$E$5:$E$15<>""),ROW(Sheet2!$C$5:$E$15)-4),ROW(1:1)),1),"")

使用公式

我不建议将此公式从一个单元格复制并粘贴到另一个单元格,而是复制公式文本并粘贴它以避免公式的某些部分发生变化。

注意公式末尾的ROW(1:1),它指定匹配结果中的哪一行将从数据中提取,并且当您在表格下自动填充公式时它应该递增。

Format as Table

Screenshot of result