2016-08-15 27 views
0

我試圖讓一個Excel模板,以便當用戶將數據複製到標籤「帳戶配置文件」,最後一行在它的內容進行計算,該值用於公式在其他牀單上。這個公式計算出的最後一行數據:計算的值在Excel範圍內使用

=LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A)) 

這工作正常,故障是當我嘗試使用結果作爲參考範圍:我希望我的公式,從第2行迭代 - >行(值LOOKUP

=COUNTIF('Account Data'!$N$2:$N$991,A8) 

的「991」),我想的是替換爲LOOKUP公式的結果,使得所述範圍是總是正確的。我確信有一個簡單的方法,但我已經嘗試了一段時間,無法弄清楚語法應該是什麼。

回答

1

斯科特是正確的,你應該直接使用COUNTIF與列引用。但是,如果這是一個人爲的例子什麼的,這是你會怎麼做你所描述的方法:

=COUNTIF(INDIRECT("'Account Data'!$N$2:$N$" & LOOKUP(2,1/('Account Data'!A:A<>""), ROW('Account Data'!A:A))), A8) 

的重要組成部分,看,就是INDIRECT("'Account Data'!$N$2:$N$" & LAST_ROW_NUMBER)INDIRECT函數是如何獲取一串文本並將其解釋爲單元格引用。該"Some text" & VARIABLE_NAME是你如何建立自變量,例如文本字符串:您使用&符號將它們串聯。

+0

謝謝!是否有更簡單的方法來動態更改數組函數的範圍,還是您仍然需要使用此解決方法? –

+2

FWIW INDIRECT是,它會重新計算每如果它所指改變或不是數據的excel無論重新計算時間的易失性的功能。像INDEX/MATCH這樣的非易失性函數只在底層數據發生變化時纔會重新計算。這意味着如果你有一個或兩個INDIRECT公式,你不會注意到它,但是如果你用它們填充一列,它會減慢Excel的計算時間。 @MikeHawk –

+1

@MikeHawk通過Scott的方法動態改變它們有什麼問題?這是快速,安全和可以理解的。我只是回答你的直接問題,而他給了你一個更好的替代方法。 – Mikegrann

1

COUNTIF不是陣列式,因此就可以使用全列引用不損害。

=COUNTIF('Account Data'!$N:$N,A8) 

但是,如果你真的想要一個動態範圍,然後使用INDEX/MATCH:

=COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,MATCH(1E+99,'Account Data'!A:A)),A8) 

這會發現,有一個數列中的最後一個單元格。如果列A填充了文本,則用替換爲"ZZZ"

如果你想使用LOOKUP則:

=COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A))),A8)