2016-04-14 57 views
2

在此基礎上sample data,我這個公式,給了我一個大問題準確的結果......它不自動填充到新行谷歌表自動重複使用ARRAYFORMULA()

=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的結果到每一行。如果我能弄清楚原因,我肯定我可以將解決方案的概念應用到這個簡單的公式中,並將其添加到上面更復雜的公式中。

+1

可以共享一個樣紙 - 我有一個想法,那裏有可能會是問題 - 但沒有任何想法或樣品虛數據來測試它不可能猜測你想要做什麼 –

+0

@AuriellePerlmann - 列「I」會自動填充到新行,但會產生不正確的值。列「J」產生正確的值;但是,該公式已手動複製到每一行。 –

+0

@AuriellePerlmann - 我之前提供的鏈接不允許您有足夠的權限......這一個應該做的伎倆... https://docs.google.com/spreadsheets/d/1EkQNz0ar93fgKsEdnih7FiaVZrY3XbTFOOWQ_jMnUlg/edit?usp=sharing –

回答

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