我在一个excel表格里有一串连续的日期,这些日期代表了从一家商店取货的时间。 我需要确定是否有超过60天的间隔或最大的间隔。 例如:9518, 91819, 112018
9518, 91819, 112018, 122118
第2个和第3个日期的差距最大的是63。 我要么需要 "63",要么需要 "是",如果>63。 我有几百行这些日期,所以想找一个不需要建立辅助表的公式。
先谢谢你。
如果日期是在不同的单元格中。
=MAX(B1:D1-A1:C1)>60
根据不同的版本,当退出编辑模式时,可能需要用Ctrl -Shift -Enter确认,而不是Enter。
如果它们在同一个单元格中,以逗号分隔。
=MAX(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b["&ROW($ZZ$2:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))&"]")-FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b["&ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))&"]"))>60
根据不同的版本,在退出编辑模式时可能需要用Ctrl-Shift-Enter代替Enter来确认。
如果日期都在一个单元格中,并且你的Excel最近版本有 SEQUENCE
函数,你可以使用
=AGGREGATE( 14,6,DATEVALUE(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),SEQUENCE(10)*99,99)))-DATEVALUE(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),IF(SEQUENCE(10)=1,1,(SEQUENCE(10)-1)*99),99))),1)
其中的 10
主张 SEQUENCE
只是比可能包含的条目总数大一些的值。
如果你没有 SEQUENCE
函数,你可以使用类似:
=ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1))
我更喜欢把它做成一个命名公式,并命名为 seq
所以最后的公式会是这样的。
=AGGREGATE( 14,6,DATEVALUE(TRIM(MID(SUBSTITUTE(A3,",",REPT(" ",99)),seq*99,99)))-DATEVALUE(TRIM(MID(SUBSTITUTE(A3,",",REPT(" ",99)),IF(seq=1,1,(seq-1)*99),99))),1)
excel中的日期-时间的单位是自纪元以来的天数,浮点数,有一个你可以调整的演示数字格式(我喜欢YYYY-MM-DD等日期)。 如果你的字符串还没有自动转换为日期的话,应该很容易转换为日期。 我敢打赌,一定有一个函数可以做到这一点 减去它们,但是由于它们是带分数的日期时间浮点数,你可能需要找到一个名为int或integer的函数来刮去任何分数。 当然,如果它们都缺少时间成分,那部分默认为相同的时间,所以减法返回的是整日。