在Excel中查找以前的日期

时间:2018-09-16 03:21:00

标签: excel

寻找一种方法来找出上一次事件发生的时间。这是我在Excel中获得的数据。我希望能够在“首页”和“离开”栏中查找“首页”列的名称,然后从上次出现该名称的日期中减去日期。这可能吗?如果是这样,我在寻找什么公式?

Date       Home Away
10/4/2017   TOR WPG
10/4/2017   STL PIT
10/4/2017   CGY EDM
10/4/2017   PHI SJS
10/5/2017   NSH BOS
10/5/2017   MTL BUF
10/5/2017   COL NYR
10/5/2017   WSH OTT
10/5/2017   MIN DET
10/5/2017   PIT CHI
10/5/2017   ARI ANA
10/5/2017   PHI LAK
10/6/2017   NYI CBJ
10/6/2017   FLA TBL
10/6/2017   VGK DAL
10/7/2017   NYR TOR
10/7/2017   DET OTT
10/7/2017   TBL FLA
10/7/2017   COL NJD
10/7/2017   BUF NYI
10/7/2017   NSH PIT
10/7/2017   MTL WSH
10/7/2017   MIN CAR

所需结果:

Date    |  Home|Away|Home_last|Away_Last
10/4/2017   TOR WPG 0   0
10/4/2017   STL PIT 0   0
10/4/2017   CGY EDM 0   0
10/4/2017   PHI SJS 0   0
10/5/2017   NSH BOS 0   0
10/5/2017   MTL BUF 0   0
10/5/2017   COL NYR 0   0
10/5/2017   WSH OTT 0   0
10/5/2017   MIN DET 0   0
10/5/2017   PIT CHI 1   0
10/5/2017   ARI ANA 0   0
10/5/2017   PHI LAK 1   0
10/6/2017   NYI CBJ 0   0
10/6/2017   FLA TBL 0   0
10/6/2017   VGK DAL 0   0
10/7/2017   NYR TOR 2   3
10/7/2017   DET OTT 2   2
10/7/2017   TBL FLA 1   1
10/7/2017   COL NJD 2   0
10/7/2017   BUF NYI 2   1
10/7/2017   NSH PIT 2   2

1 个答案:

答案 0 :(得分:0)

D2=IFERROR(DAYS($A2,INDIRECT("A"&MAX(IF(B2=$B$1:$C1,ROW($B$1:$C1),0)))),0)

  1. 我们将检查B2并向后看是否存在匹配项。如果是这样,通过使用Row,我们需要它的ROW()号,否则应该是0。但是,一个普通公式一次只能检查一个单元格,因此我们需要将其设为 Array Formlua 。也就是说,它可以一次一次扫描给定区域。

  2. 所以我们现在有一堆行号。由于数据已经按日期排序,因此我们使用公式MAX()选择最大的一个。

  3. 现在我们有了所需日期的Row号,并且我们知道该日期始终在Column A中。 Indirect()公式可以轻松地将它们放在一起并获得在该单元格中写入的日期。

  4. DAYS()用于减去两个日期。第一个参数是公式所在的日期,第二个参数是我们在第1步到第4步中找到的日期。

  5. 但是,有些条目可能找不到日期。因此,我们在公式之外放置了IFERROR(),以防止出现任何错误代码。

  6. 请记住,这是一个数组公式,因此请按 Ctrl + Shift + Enter 完成该公式。如果您已正确输入公式,则应该在公式外面看到{}

  7. 最后,在您的图表中填写此公式,如果不走运,可能还要进行一些调整。