Excel公式與函數之美03:有趣的函數

函數是公式的「細胞」,構造強大而優雅的公式少不了函數的配合。

 

Excel提供了300多個內置函數,有些函數很活躍,他們看似平常,但在公式中能夠經常看到他們的「身影」。正是這些函數,在公式中組合後卻能發揮出巨大的威力。

 

下面主要介紹一些在公式中經常會用到的函數,探討一些細節和技巧。在後面的系列文章中,我會對很多有特點的函數進行專門的詳解。

 

區分大小寫的函數

下表列出了區分大小寫的Excel函數或運算的對比:

上表中有關函數的詳細講解分別參見完美Excel微信公眾號(公眾號名:excelperfect)推送的文章《Excel函數學習15:EXACT函數》、《Excel函數學習11:SUBSTITUTE函數》、《Excel函數學習9:FIND函數》、《Excel函數學習8:SEARCH函數》。

 

獲取數據位置或者個數值的函數

下表列出了一些能夠獲取數據位置或者個數值的Excel函數及相關說明:

上表中,ROW函數返回單元格所在行的行號,如果參數為單元格區域,則返回左上角單元格所在行的行號。COLUMN函數返回單元格所在列的列號,如果參數為單元格區域,則返回左上角單元格所在列的列號。例如:

=ROW()

返回當前單元格所在行的行號。

=ROW(B5)

返回數值5,表示第5行。

=ROW(E9:H18)

返回數值9,即單元格區域E9:H18左上角單元格E9所在行的行號。

COLUMN函數類似。當傳遞單元格區域作為ROW函數和COLUMN函數的參數時,可以返回數組值。在後面我們會看到,利用這個特點,可以編寫出靈活強大的公式。

 

要想知道一個區域有多少行多少列,則應使用ROWS函數和COLUMNS函數。例如:

=ROWS(C3:E6)

返回數值4,表示單元格區域C3:E6有4行。

=COLUMNS(C3:E6)  

返回數值3,表示單元格區域C3:E6有3列。

 

MATCH函數的語法為:

MATCH(要查找的值,查找區域或數組[,匹配類型])

其中,匹配類型為可選參數,如果指定其值為0,那麼MATCH函數將在查找區域或數組中查找和要查找的值完全相等的第一個值。如果沒有指定該參數值,或者指定其值為1,那麼MATCH函數將在查找區域或數組中查找小於或等於要查找的值的最大值,但是查找區域或數組需要按升序排列。如果指定其值為-1,那麼MATCH函數將在查找區域或數組中查找大於或等於要查找的值的最小值,但是查找區域或數組需要按降序排列。

如果查找區域或數組需要按升序排列,那麼各類數據的排列順序是:數字、文本字元、FALSE或TRUE,例如5,」excelperfect」,TRUE。降序排列與之相反。

如果指定匹配類型的值為0,並且要查找的值是文本,那麼可以在要查找的值中使用通配符。問號(?)可以匹配任何一個字元,星號(*)可以匹配任意多個字元。

 

上表中有關函數的詳細講解分別參見完美Excel微信公眾號(公眾號名:excelperfect)推送的文章《Excel函數學習1:MATCH函數》、《Excel函數學習22:COLUMNS函數》、《Excel函數學習13:ADDRESS函數》。

 

獲取數據值的函數

下表列出了一些可以獲取數據值的Excel函數及相關的說明:

上表中,VLOOKUP函數按照最後一個參數指定的模式,在數據區域的第1列向下查找值,從指定列中找到相應的數據。下圖所示的工作表列舉了VLOOKUP函數使用的不同情形:

如果指定VLOOKUP函數的最後一個參數為TRUE(默認值),那麼查找區域的第1列應該按照升序排列。此時,該函數會查找並返回最後一個匹配項。如果要查找並返回第一個匹配項,那麼將該函數的最後一個參數設置為FALSE。例如,示例工作表中查找數據10時的情形。

如果在查找的數據區域中沒有想要查找的值,如示例中的數據15、25、35,那麼VLOOKUP函數會根據指定的最後一個參數來查找值。當指定最後一個參數為TRUE時,獲取小於且與所查找值最接近的值,而當指定最後一個參數為FALSE時,會返回#N/A錯誤。

在指定VLOOKUP函數的最後一個參數為FALSE時,我們可以不需要查找區域按升序排列,並且在有多行值與查找的值相同時,可以獲得第1行所對應的值,但在沒有找到值時會返回錯誤。

HLOOKUP函數的用法與VLOOKUP函數相同,只是在數據區域的第1行向右查找。

 

VLOOKUP函數和HLOOKUP函數只能使用最左側列或者最頂部的行進行查找,獲取左側列或者下方行中的值,這是它們的一個主要缺點。INDEX函數和MATCH函數有效彌補了其不足。

 

INDEX函數經常與MATCH函數配合使用,由MATCH函數找到相應的行列號,作為INDEX函數的參數,獲取相應的值。INDEX函數不僅可以使用數組作為參數,而且還可以返回數組值,在後面我們將會看到相關應用示例。

 

INDIRECT函數可以使用文本來構造單元格引用。例如:

=INDIRECT("B" &2)

或者

=INDIRECT(「B2」)

等價於

=B2

那為什麼不直接就輸入=B2呢?在某些情形下,可能參數就是文本,而一些函數不會接受文本作為參數,例如ROW函數。當使用

=ROW(」1:2」)

時,Excel不會接受。如果使用:

=ROW(INDIRECT("1:2"))

可以滿足要求。使用數組輸入,返回{1;2}。這正可以彌補ROW函數的不足。

又如,ROW函數不接受其它函數作為參數,如果輸入:

ROW(1:LEN(A1))

Excel會返回錯誤。但可以這樣輸入:

ROW(INDIRECT(「1:」 &LEN(A1))

如果單元格A1中字元串的長度為3,那麼上述公式變為:

ROW(INDIRECT(「1:3」))

進一步計算為:

{1;2;3}

註:如果使用R1C1樣式的引用,那麼需要指定參數FALSE,例如

=INDIRECT("R2C2",FALSE)

表示引用單元格B2。

 

OFFSET函數都可以引用其他的單元格,返回相關的單元格或單元格區域。不像VLOOKUP函數那樣要順序查找,因此涉及大量單元格時更快速。

 

推薦閱讀:

Excel中數字輸好了,怎樣在數字後面批量添加「元」字?
Excel公式與函數之美12:發揮IF函數的威力
怎麼用 Excel 做蒙特卡洛模擬?
多種Excel表格條件自動求和公式
Excel非重複、非空白單元格提取

TAG:有趣 | 公式 | 函數 | Excel公式 | Excel |