-
1 # 簡淨軒語
-
2 # 考拉的凝視
一、問題轉化為例項分析
我先將題主的問題轉化為一個例項,如下圖所示:
從上圖可以看到:
A10=12,所以需要求的和是前12行的和。
假設是求B列的前12行和,則常規求和公式為【=SUM(B1:B12)】,結果為585。
但是A10的值是任意的,這種情況下,一旦A10的值發生變化,常規求和公式得出的結果就不對了,必須要隨著A10值的變化去手工調整求和範圍。顯然,這樣很麻煩。
所以題主希望在不調整公式的情況下,求和範圍和結果隨著A10值的變化而變化。
二、問題解答我們先看一下最終效果:
從上圖可以看到:
當A10的值變化時,常規求和的結果沒有變化,而自動求和的結果隨A10值的變化而變化。
自動求和公式:
=SUM(OFFSET($B$1,,,INDIRECT("A10"),))
其中,INDIRECT("A10")表示A10的值,設為X,初始為12。
OFFSET($B$1,,,INDIRECT("A10"),)表示B1至BX(初始為B12)的範圍,當A10的值變化時,X變化,B1至BX的範圍發生變化,最終用SUM求和的結果也發生變化。
-
3 # 套路Excel
此問題可以使用的函式方法比較多。如下圖例子:
1、indirect函式
1.1、indirect函式讀取A10單元格的值:=INDIRECT("A10")
1.2、使用sum函式求和
=SUM(B1:INDIRECT("b"&INDIRECT("A10")))
1.3、明白indirect函式的用法後,可以進一步簡化上面的公式為:
=SUM(INDIRECT("b1:b"&A10))
INDIRECT("b1:b"&A10)返回的是b1:b10的單元格區域的陣列,如下:
滑鼠抹黑公式,然後按F9,得出結果:
{35;69;36;16;77;73;58;36;28;93}
最後配合sum+indirect函式求和,得出結果:
2、使用offsect函式返回動態的單元格範圍
=SUM(OFFSET(B1,0,0,A10,1))
OFFSET(B1,0,0,A10,1)返回B1單元格為起點,0行,0列,10行高,1列寬的單元格區域,也就是B1:B10單元格區域,然後用sum函式對此區域求和。
offset四個引數中,可以省略為:=SUM(OFFSET(B1,,,A10,)),同樣得出521的結果。
3、使用SUMPRODUCT+ROW函式
=SUMPRODUCT((ROW(B1:B20)<=A10)*B1:B20)
此方法用ROW(B1:B20)製造條件,只要行號小於等於A10單元格的值(10)的,就進行求和,間接得出結果。
以上為一些方法,僅供參考!
推薦使用sum+offset的方法,offset經常用來返回動態的單元格範圍。
回覆列表
用indirect函式吧。
公式: =SUM(A1:INDIRECT("A"&INDIRECT("A13")))
頁面截圖:
動畫演示: