![excel排序求和:如何統計前幾名數據合計 下篇](http://p2.ttnews.xyz/loading.gif)
編按:哈嘍,大家好!在上篇文章中,我們分享瞭如何在雜亂無序的數據中,統計前幾名數據的合計。公式也在上篇教程中,提供給了大家。不過在文末,我們還留了一個問題,為什麼將原本出錯的公式“ROW(1:H2)”改為“ROW(INDIRECT("1:"&H2))”就沒問題了呢?本篇就為大家揭曉答案!
*********
上次咱們說到一個公式=SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H2))這部分如果寫成ROW(1:H2)就會報錯:
![excel排序求和:如何統計前幾名數據合計 下篇](http://p2.ttnews.xyz/loading.gif)
原因也告訴大家了,就是ROW函數的參數只能使用單元格或單元格區域。
因此解決的辦法就是如何使1:H2成為一個有效的單元格區域,要想實現這個目的,就需要用到INDIRECT函數,下面我們來介紹這個函數的用法。
INDIRECT的用法其實很簡單,一句話就說完了:將表示地址的字符串作為INDIRECT函數的參數,可以直接得到該地址中的數據,表示地址的字符串必須置於引號內。
通過兩個例子來說明這句話的含義:
例一、 在公式=INDIRECT("A1")中,A1可以表示一個單元格,加引號後作為INDIRECT的參數,效果與=A1是一樣的。
例二、 在公式=SUM(INDIRECT("A1:A3"))中,INDIRECT("A1:A3")與A1:A3的意義相同,表示這個單元格區域。
以上兩個例子中,地址都是固定不變的,也許大家會覺得用了INDIRECT有點多此一舉,接下來再看一個區域不固定的例子。
使用公式=SUM(INDIRECT("A1:A"&B1))可以實現一個動態區域求和的效果:
注意到這個公式中,求和範圍是從A1開始的,但是結束位置不確定,是通過B1單元格的數字來確定的。
"A1:A"&B1顯然不能表示一個單元格區域,但是隨著B1單元格中數據的變化,"A1:A"&B1就能表示“A1:A2”,“A1:A5”等等。
如果這個例子看明白的話,文章開頭的問題就好理解了,"1:"&H2雖然不能表示一個單元格區域,但是INDIRECT("1:"&H2)卻可以表示“1:3”,“1:5”等等。(兩個數字中間加冒號可以表示第幾行到第幾行之間的單元格區域)
因此ROW(1:H2)是錯誤的,而ROW(INDIRECT("1:"&H2))就沒問題了。
到這裡,咱們上一次遺留的問題算是告一段落了。
可是細心的朋友也許會注意到,在使用INDIRECT函數的時候,參數有時候加引號,有時候沒加引號,有時候還需要&這個連接符,這其中有什麼講究嗎?
其實要用好這個函數,關鍵點的確是對引號的理解。
INDIRECT函數的參數如果不加引號,那麼參數表示的單元格中必須是一個可以表示地址的內容。
例如,A10單元格中的內容為A1,公式=INDIRECT("A10")的結果等同於=A10,即返回數據“A1”;而=INDIRECT(A10)則等同於=A1,結果是A1單元格中的數據“8”。
這個例子需要自己多思考,理解加引號和不加引號的區別,這個坎才能過去。
至於什麼時候用連接符&,也有一個判斷標準,那就是為了構造出一個合法的地址,可能會用到常量(字母、數字和符號),也可能會用到變量(主要指單元格)。
例如在本文前面提到的例子中,表示單元格區域的地址“A1:A3”就用到了常量,其中有字母A,數字1和3,以及冒號。
如果要讓這個地址的範圍能夠通過某個單元格的值來確定,就需要加入變量。
例如"A1:A"&B1,其中B1就是變量,這個單元格區域具體是什麼,那就要看B1單元格中的數字了。
還有更加複雜的情況,讓單元格區域的開始和結束位置都用變量來表示,例如"A"&B1&":A"&B2,在這個表示方法中,單元格開始位置由B1單元格中的數字來確定,結束位置由B2單元格中的數字來確定。
常量需要加引號,變量不加引號,常量和變量使用&進行連接。
因此要想用好INDIRECT函數,不僅僅需要非常牢固的基礎知識,也需要對“地址”有非常清晰的認識才行,函數本身真的不是很難。
如果大家還想了解更多關於INDIRECT函數的內容,也可以留言,後續將繼續為大家分享這個函數更多奇妙的用法。
****部落窩教育-excel排名合計公式****
更多教程:部落窩教育(www.itblw.com)
微信公眾號:exceljiaocheng
閱讀更多 部落窩教育h 的文章