复制列表但排除旧日期

时间:2018-02-14 20:15:14

标签: excel

我试图弄清楚如何将现有列表(每天更新)从一个工作表复制到另一个工作表,但不包括早于today()的日期。 我知道如何通过VLookUpIndex Match查找具体日期,但我的目标是过滤掉一整套日期。 这是一个样本列表,每天通过一组公式更新:

enter image description here

另一张表上的输出应如下所示:

enter image description here

在这种情况下,不包括2月7日和2月10日,因为今天的日期是14日。 原始列表中的条目数量可能会有所不同。

如何在不使用VBA的情况下完成此操作?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

假设您的数据位于A1:C17(我包括洛杉矶标题以及列标题名称),此公式应该可以解决问题:

=IFERROR(INDEX((--($A$3:$A$17>=TODAY())*$A$3:$C$17),COUNT($A$3:$A$17)-COUNTIF($A$3:$A$17,">="&TODAY())+ROW(1:1),1),"")

输入公式后,您可以将其复制到输出表的其余部分。

为此,只需将...+ROW(1:1),1)...更改为:

即可
  • ...+ROW(1:1),2)...代表 Out 列,
  • ...+ROW(1:1),3)...代表栏中。

这有点令人费解,但似乎有效。它基于数组的思想运行,但它不是你需要提交的那种数组公式 Ctrl + Shift + Enter ,我通常觉得这是一个奖励,因为如果出现问题,更容易找出错误。

如果将输出范围拖过数据将会返回的点,那么在IFERROR中很好地将其全部包装就可以清除错误。

答案 1 :(得分:0)

假设您有以下数据:

+---+-----------+
|   |     A     |
+---+-----------+
| 1 | 2/10/2017 |
| 2 | 2/13/2018 |
| 3 | 2/17/2017 |
| 4 | 2/15/2018 |
| 5 | 2/18/2018 |
| 6 | 2/19/2018 |
| 7 | 2/20/2018 |
| 8 | 2/28/2018 |
+---+-----------+

然后,要获得大于或等于今天的日期列表,您可以使用:

=IFERROR(INDEX($A$1:$A$8,(ROW()-1)+COUNTIF($A$1:$A$8,"<="&TODAY())), "")

然后复制下来。

要从B列获取相应的值,只需将INDEX(<range>, ...中的范围更改为B列:

 =IFERROR(INDEX($B$1:$B$8,(ROW()-1)+COUNTIF($A$1:$A$8,"<="&TODAY())), "")

*这是假设您的日期从最小到最大排序,否则这很糟糕。