2015年8月1日 星期六

用簡單的函式做出排行榜


開始實作前先介紹幾個會用到&常用到的函式。

SMALL函式簡介
SMALL函式的架構為: SMALL(要尋找的範圍,排名),
舉例來說,SMALL(A1:C3,3)這個函數會呈現A1到C3當中排名第3小的數字。





LARGE函式簡介
LARGE函式的架構LARGE(要尋找的範圍,排名),
舉例來說,LARGE(A1:C3,1)這個函數會呈現A1到C3當中最大的數字。

OFFSET函式簡介
OFFSET函式的架構OFFSET(標的欄位,欄數,列數),
OFFSET(H6, 3, -2)這個函數會show出位於H6下面3欄、左邊2列的格子,也就是F9。






MATCH函式簡介
MATCH函式的架構MATCH(目標的值,要尋找的欄或列,搜尋方式),
若搜尋方式打0的話,該函式會show出目標值位於要尋找的"欄"或"列"中的第幾個位置













範例實作
















上圖左側是台灣上市櫃公司7/4的部份資料,
只要每次有所更新,透過函式,右側的表格也會連動的呈現出最新的資訊,
這是Excel函式簡單又有效率的地方。

以找出外資當日買超張數最多的股票股號為例,邏輯如下:『

使用LARGE
我們先找出C列中外資買超最多的數量為何,
→LARGE(C:C,G1),
之所以在排名當中輸入G1的原因,
是做好了這個函式後我們只要順著拉下來就會跑出排名1-10的張數了。

使用MATCH
接下來我們要找這個最大值位於C列的第幾個欄位上,
→MATCH(LARGE(C:C,G1),C:C,0),在這個例子中是660。

使用OFFSET
已經知道是第幾個欄位了,
剩下我們只要用OFFSET往左邊推幾格,就會知道買超排名第一的股票股號了,
→OFFSET(C$1, MATCH(LARGE(C:C,G1),C:C,0)-1, -2)
這裡稍微複雜些,我們先講為什麼要C1要變成C$1,
這是因為之後我們把函式往下拉的時候,C1會隨著我們啦下去而變成C2、C3,
寫成C$1之後它就會固定在C1的欄位上不動如山~

而MATCH(LARGE(C:C,G1),C:C,0)之所以要減掉1的原因是,
我們已經知道C欄中最大的數字位於第660個欄位上,
因此從C1算下去,欄位660是數下來的第659個欄位,因此要減掉1,
OFFSET當中最後的-2,就是股號相對於C列上的位置囉(往左邊2列)。』

所以..OFFSET(C$1, MATCH(LARGE(C:C,G1),C:C,0)-1, -2)這串式子,
在這個例子中會跑出3231的股號,
如果要跑出股票名稱,改成OFFSET(C$1, MATCH(LARGE(C:C,G1),C:C,0)-1, -1)即可,
剩下的2-10名只要把最上面的函式拉下去就可以了。

範例檔案
現在你就擁有一個可以自動化更新的排行表了~
該範例我上傳至: https://goo.gl/I7d56p
有興趣的朋友可以自行下載試做,
如果有問題也歡迎提出來討論!