我想使用我认为的“匹配”来找到上次出现之间的日期,并找出当前日期和它们出现的最后日期之间的差额。不过,我想对其进行自定义。如果它们分别出现在10/12和10/13上,我希望是0。因为没有休息日。但是对于10/12以及再次在10/14上,它将是1。我希望最多6天,而我希望它超过6天。
C2=IFERROR(DAYS($B2,INDIRECT("A"&MAX(IF(A2=$A$1,ROW($A$1),0)))),0)
数据:
Team Date
BOS 1980-10-10
BUF 1980-10-10
CGY 1980-10-10
CHI 1980-10-10
HFD 1980-10-10
NYR 1980-10-10
DET 1980-10-11
EDM 1980-10-11
BOS 1980-10-12
CGY 1980-10-12
CHI 1980-10-12
CLR 1980-10-12
DET 1980-10-12
HFD 1980-10-12
LAK 1980-10-12
LAK 1980-10-12
MNS 1980-10-12
MTL 1980-10-12
NYI 1980-10-12
NYR 1980-10-12
BOS 1980-10-13
BUF 1980-10-13
CGY 1980-10-13
CHI 1980-10-13
CLR 1980-10-13
EDM 1980-10-13
HFD 1980-10-13
MTL 1980-10-13
NYI 1980-10-13
NYR 1980-10-13
结果
Team Date Days Rest
BOS 1980-10-10 6
BUF 1980-10-10 6
CGY 1980-10-10 6
CHI 1980-10-10 6
HFD 1980-10-10 6
NYR 1980-10-10 6
DET 1980-10-11 6
EDM 1980-10-11 6
BOS 1980-10-12 1
CGY 1980-10-12 1
CHI 1980-10-12 1
CLR 1980-10-12 6
DET 1980-10-12 0
HFD 1980-10-12 1
LAK 1980-10-12 6
LAK 1980-10-12 0
MNS 1980-10-12 6
MTL 1980-10-12 6
NYI 1980-10-12 6
NYR 1980-10-12 1
BOS 1980-10-13 0
BUF 1980-10-13 2
CGY 1980-10-13 0
CHI 1980-10-13 0
CLR 1980-10-13 0
EDM 1980-10-13 1
HFD 1980-10-13 0
MTL 1980-10-13 0
NYI 1980-10-13 0
NYR 1980-10-13 0
答案 0 :(得分:1)
编辑:发布后,我意识到从您那里得到的结果截然不同。与今天的日期相比,您的第一笔记录返回了6,远远超过了6天的限制。
我的公式是将当前的团队日期与上一个团队日期进行比较,而不考虑下一个尚未玩过的游戏。
我会保留答案,因为它可能会有用。
在每一行中,您需要在当前队伍以下的队伍中执行MATCH
。
要获取当前行下方的团队其他数据的引用,可以使用INDEX
和COUNTA
。
在第2行中输入的以下公式将引用单元格A3:A31
,向下拖动到第3行将引用A4:A31
,依此类推。在大多数情况下,单独使用它会返回#VALUE
错误。
=$A3:INDEX($A:$A,COUNTA($A:$A))
与MATCH
函数结合使用,它将返回下一次出现Team的行数,或者返回#N/A
错误。
=MATCH($A2,$A3:INDEX($A:$A,COUNTA($A:$A)),0)
将当前行号添加到结果中,以给出下一次出现的实际行:
=MATCH($A2,$A3:INDEX($A:$A,COUNTA($A:$A)),0)+ROW()
接下来,需要引用返回的行号B列中的日期。 INDEX
可用于引用所有B列,并从正确的行返回值:
=INDEX($B:$B,MATCH($A2,$A3:INDEX($A:$A,COUNTA($A:$A)),0)+ROW())
然后可以将其与当前行上的日期进行比较以找出差异(减去1则第二天= 0):
=DATEDIF($B2,INDEX($B:$B,MATCH($A2,$A3:INDEX($A:$A,COUNTA($A:$A)),0)+ROW()),"d")-1
处理有任何错误(如果最后提及团队则#N/A
,如果列表中最后一项则#NUM!
):
=IFERROR(DATEDIF($B2,INDEX($B:$B,MATCH($A2,$A3:INDEX($A:$A,COUNTA($A:$A)),0)+ROW()),"d")-1,"-")
现在,第16行上的 LAK 只有-1处理。我能想到的最短的方法是使用下一列作为最终结果:
=IF($C2<0,0,$C2)