我在A列中有一个不规则日期的升序排序列表:A:
A B C D (A:A,A2:A) E (A:A,A3:A)
2017-11-09 10 10 NA NA
2017-11-10 11 21 1 NA
2017-11-14 15 36 4 5
2017-11-15 22 58 1 5
C列:C是B:B的滚动总和。我试图在D:D / E:E中找到arrayformula来查找当前行(开始日期)和上面X行(结束日期)之间的日期:
=ArrayFormula(DATEDIF(B:B-(X Rows),B:B,"D"))
目标是在X天内找到D:D的变化范围:
D:D - D:D-rowX / datedif (A:A-rowX, A:A)
即第C4行2天:
(C4-C2) / datedif(C4-2,C4,"D")
(58-21) / datedif(C2,C4,"D")
37 / 5 = 7.4
行C10上的5天:
(C10-C5) / datedif(C10-5,C10,"D")
行C20上的15天:
(C20-C5) / datedif(C20-15,C20,"D")
我试图计算出1,2,3,4,7,28行的X值,这意味着阵列必须启动1,2,3,4,7,28行。
现在,数组错误引用了错误的引用,因为第一个开始日期是DATEDIF(B-X,B1," D"),其中B-X是无效的负引用。具有错误值而不是错误引用的Arrayformulas似乎只是跳过过去的错误并在输入有效后开始工作。但我无法弄清楚如何跳过错误的引用。我尝试使用INDIRECT
强制开始日期,但无法将其识别为日期。我也尝试了DATEDIF(B:B, B:B+X,"D")
,它会吐出正确的数字,但结果会被X行所抵消。我尝试过反向排序A:A,=ArrayFormula(if(len(A:A),DATEDIF(SORT(A2:A,1,0),SORT(A:A,1,0),"D"),""))
它生成一个正确答案的反向订单列表,我无法弄清楚如何翻转。
好像我错过了一些明显的东西?
编辑:试图澄清原帖
是否有一种简单的方法可以取代整个列? 替代解决方案?
公式大致有效但未与正确的行对齐:
C D E
1 2 3
1 2 3
1 2 3
1 2
1
我只需要它来显示
C D E
1
1 2
1 2 3
1 2 3
1 2 3
为了使事情保持一致,我可以在F列的第2行放置单元格:
=array_constrain(ARRAYFORMULA(D:D),COUNT(A:A)-2,1)
或G列第3行中的单元格:
=array_constrain(ARRAYFORMULA(E:E),COUNT(A:A)-3,1)
但是如果我尝试从row1通过:
触发teh公式=arrayformula(if(row(A:A)>=2,array_constrain(D:D,COUNT(A:A)-2,1)))
它标记everythign> = 2行false并且仍然呈现D:D而不将单元格移动适当的行数:
C D
1 false
1 2
1 2
1 2
1
编辑:我关闭了请求,结果只是使用了vlookup(B:B-X),它提供了足够的结果来满足我的需求。
答案 0 :(得分:0)
将以下公式添加到D1
=ArrayFormula({"N/A";ARRAY_CONSTRAIN(DATEDIF(A:A,A2:A,"D"),COUNT(A:A)-1,1)})
以下公式为E1
=ArrayFormula({"N/A";"N/A";ARRAY_CONSTRAIN(DATEDIF(A:A,A3:A,"D"),COUNT(A:A)-2,1)})
解决方案使用ARRAY_CONSTRAIN仅返回所需的结果值,并使用数组表示法为行添加所需的N / A值,因为它没有一对来计算日期差异。
备注:
请注意,DATEDIF函数使用列A作为引用,因为此列是保存日期值的列。