根据这个sample data,我有这个公式,它给出了一个主要问题的准确结果......它没有自动填充到新行
=arrayformula(if(countif(filter(G$2:G,A$2:A=A2,B$2:B=B2),">"&G2)>0,countif(filter(G$2:G,A$2:A=A2,B$2:B=B2),">"&G2),COUNTIF(filter(E$2:E,A$2:A=A2,B$2:B=B2),"Finished")))
我尝试过这个公式,看看它是否会自动填充到新行......
=arrayformula(IF(ISNA(A2:A),,if(countif(filter(G$2:G,A$2:A=A2,B$2:B=B2),">"&G2)>0,countif(filter(G$2:G,A$2:A=A2,B$2:B=B2),">"&G2),COUNTIF(filter(E$2:E,A$2:A=A2,B$2:B=B2),"Finished"))))
...上面的公式确实自动填充;但是,每个值都是1
而不是正确的值。
我尝试了一个简单的公式,它不能完成上述所做的一切,但可能有助于排除故障。我怀疑上面的公式只是一遍又一遍地显示第一行的结果。为了测试我尝试了这个公式...
=arrayformula(IF(ISNA(A2:A),,indirect("g"&ROW(indirect("g2:g"&counta(G2:G))))))
...事实证明,上面的公式确实将G2的结果显示在每一行中。如果我能找出原因,我相信我可以将解决方案中的概念转化为这个简单的公式,并将其添加到上面更复杂的公式中。
答案 0 :(得分:1)
请试试这个公式:
=ArrayFormula(if(
mmult(
--(A2:A=TRANSPOSE(A2:A))*
--(B2:B=TRANSPOSE(B2:B))*
--(G2:G<TRANSPOSE(G2:G)),
row(A2:A)^0)>0,
mmult(
--(A2:A=TRANSPOSE(A2:A))*
--(B2:B=TRANSPOSE(B2:B))*
--(G2:G<TRANSPOSE(G2:G)),
row(A2:A)^0),
mmult(
--(A2:A=TRANSPOSE(A2:A))*
--(B2:B=TRANSPOSE(B2:B)),
--(E2:E="Finished"))
)
)
警告!它运行缓慢,因此最好删除工作表中的空白行。更好地分两步使用这个公式。第1步公式:
=ArrayFormula(mmult(--(A2:A=TRANSPOSE(A2:A))*
--(B2:B=TRANSPOSE(B2:B))*
--(G2:G<TRANSPOSE(G2:G)),
row(A2:A)^0))
步骤2公式:
=ArrayFormula(mmult(--(A2:A=TRANSPOSE(A2:A))
*--(B2:B=TRANSPOSE(B2:B)),
--(E2:E="Finished")))
开放范围重载此公式。如果你使用它也可以更快地工作:
offset(E2,,,counta(E2:E))
代替E2:E