2012-02-27 137 views
0

如何在多個單元格中使用單個OFFSET()的結果?避免重複的偏移量計算

我有一個工作表,有很多行。對於每一行,我都感興趣的是一組連續的列。我感興趣的列的範圍取決於其他地方設置的一些單元格;我可以使用OFFSET()函數來定義範圍。

對於每一行,我需要在同一個數組引用上調用幾個數組函數(SUM,AVERAGE等)。可以通過在每種情況下調用OFFSET來完成... SUM(OFFSET(args)),AVERAGE(OFFSET(args));但我發現錯誤,因爲我試圖使所有OFFSET調用與數組的最新定義保持同步。

有沒有辦法,我可以把

B1: =SUM(OFFSET(args)) 
C1: =MAX(OFFSET(args)) 

A1: =OFFSET(args) 
B1: =SUM(A1) 
C1: =MAX(A1) 

或等效的,這樣我就可以改變基準的定義在一個地方,它適用於所有的方法行中的函數?

+0

是不同的列(或可能不同)的每一行,或者你一直在查看相同的列? – 2012-02-27 22:05:41

回答

3

讀你的例子它發生在我這是一個完美的時間來聘請一個命名公式。 CTRL-F3打開名稱嚮導,創建一個名稱,如MyRange並在REFERSTO:部分中,輸入OFFSET()您在A1中放入的公式。一定要使其成爲絕對參考公式。

然後,你應該能夠總結你

A1創建的結果範圍:= SUM(MyRange)

B1:= MAX(MyRange)

+0

+1簡單有效 – brettdj 2012-02-28 03:37:41

+0

同意。我的回答太複雜了。這很容易。 – 2012-02-28 06:10:44

+0

試圖確保我遵循這個解決方案 - 你是否建議一個命名公式每行?該解決方案是否可擴展 – VoiceOfUnreason 2012-02-28 15:57:13

0

您可以使用Address函數來構建範圍地址,然後使用Indirect來引用該範圍。例如,在A1中假設您輸入:=ADDRESS(5,2,1,1)&":"&ADDRESS(5,3,1,1)。這會給你一個$ B $ 5:$ C $ 5的地址。現在,您可以使用一個公式,例如=SUM(INDIRECT(A1))來獲取該範圍內的值的總和。

您沒有提供足夠的詳細信息,因此我不知道您使用的Offset是否適合此計劃。如果您可以計算開始和結束的行和列,那麼您可以用AddressIndirect替換Offset。你可以以某種方式工作,但我沒有足夠的信息來幫助解決這個問題。

0

您可以使用OFFSET數組輸入公式爲每一行生成正確的一組列,從源表右側的一致列開始(如果需要,也可以在另一張表上),並向右移動。然後,您可以在單元格B1,C1等所有其他公式中使用相同的範圍。

如果您有時需要選擇不同數量的列,則需要添加一些錯誤處理以防止可能的#N/A錯誤從污染你的計算。這可以通過IF與ISERROR或ERROR.TYPE結合來完成。