5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

我最近分享上了癮,為了賺錢也可以說是很拼命啊。為了讓各位朋友能夠看得爽,學得好,快速地掌握Excel技能,提高工作效率,從而實現升職加薪。我七點鐘起來就開始寫了。前兩天介紹了一個高手必備函數:indirect,被網友評為“Excel高手和小白的分水嶺”,見文章: 。我即將介紹的這個函數,甚至連很多在公司被稱為Excel高手的朋友都很少用到的函數:

CHOOSE函數,這個函數幾乎可以稱之高手的獨家秘笈了。這個函數基礎部分毫不起眼,然而在很多案例它卻能幹很多其他函數很難辦到的事情。

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

文:傲看今朝

一、CHOOSE函數具有什麼特點?

CHOOSE作為一個單獨的Excel函數,本身並不是很實用,說白了,它一生下來就是為給他人當“紅娘”的,就像offset、indirect一樣。順便提一下,offset函數前面的文章也有介紹,有興趣的可以看一下: 。廢話不多說了,咱們先來看看CHOOSE函數是什麼鬼?

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

CHOOSE函數 說明

看官方說法根本不知道這個可以用來幹什麼:

根據給定的索引值,從參數串中選出相應值或者操作。

從上圖中我們可以知道,此函數至少2個參數,最多可以有255個參數。那他具體能幹啥呢,我們點擊“有關該函數的幫助”:

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

示例說明

看到這個說明,有點明白了:這個函數主要是返回index_num(索引值,第1個參數,其實就是位置序號)在後面多個value(一般為值、單元格引用或者區域引用)中對應位置的單元格或者區域,比如:=CHOOSE(2,A2,A3,A4,A5)公式中2為index_num,即位置序號,除了2這個參數,剩下還有4個參數,從左至右排序,A2排第1,A3排第2,A4排第3……,位置序號為2,因此取第二個參數,也就是A3單元格了。

二、快速求學生分數等級

說到這裡,我可能覺得這個函數沒啥大用處,我們先來看看一個非常基礎的實例(如下圖所示):求學生的分數等級

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

實例一

這個實例中,跟上個例子唯一的不同,就是第一個參數不再是整數,而是通過公式得到的一個小數(CHOOSE函數默認取整數部分)。本例中CHOOSE使用非常靈活,但非常簡單:將分數分成10個段,用前面的分數除以10即可得到索引值;每個段對應一個評價:前5個段(即0-59分)對應的評價都是“差”,第6、7段對應“中”……,這樣一個簡單的公式就可以搞定分數的等級評定了。

當然針對此問題而言,這種解決方法並非是最簡單的方法,其他的mid函數、vlookup函數、lookup函數等都要比它簡單得多,有興趣的同學去查看我之前的文章。

三、經典實用的VLOOKUP+CHOOSE函數組合

前面我們就提到過,vlookup函數是有缺陷的,它只能從左往右進行查詢,順序一旦顛倒,它就非常吃力了,雖然可以實用if數組來置換,但那也不夠靈活。因此vlookup+CHOOSE組合就出現了,這個組合的出現,讓vlookup函數做逆向不再是夢。如下圖,如何根據左側表格完成右側的查詢呢?

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

如何實現上述效果

我們知道,如果學號列在左側表格的最左側,這個問題就非常簡單,然而,圖中的學號卻是在左側表格的最右側,我們如何在vlookup函數將學號列都置換到左側表格的最左側呢?利用CHOOSE函數就可以輕鬆辦到:

=CHOOSE({1,2,3,4},$D4:$D22,$A4:$A22,$B4:$B22,$C4:$C22)

不僅如此,我們還可以根據右側的表格來調整左側表格的順序,以達到簡化公式的目的。如此例將$B4:$B22調至最後位置,得到如下公式:

=VLOOKUP($G5,CHOOSE({1,2,3,4},$D4:$D22,$A4:$A22,$C4:$C22,$B4:$B22),COLUMN(B1),)

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

位置可以隨意調換,if函數可做不到這麼隨心所欲

還是得提一下,利用vlookup+CHOOSE組合並非是解決此問題的最佳,要解決此問題,相對簡單的還是index函數,看下圖:

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

index函數也可以的哦。

關於index函數,請參閱我的文章:

四、利用CHOOSE函數做多表交叉查詢

如下圖所示,如何將放在不同sheet中的數據返回到彙總表進行查詢,實現下圖的效果?

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

強大的多表交叉查詢

答案就是Index+Choose+Match函數組合,具體怎麼來做呢?

思路分析:如果單純只是查詢一個表格的數據,我們利用index+match就可以搞定了,例如我們只查詢2010年的數據,公式如下:

=INDEX('2010年'!B2:M6,MATCH(B4,'2010年'!A2:A6,),MATCH(B5,'2010年'!B1:M1,))

現在我們要從多個表格中任意一個表格返回值,而這些表格的結構都一樣,既然表格結構都一樣,他們我們的index+match組合的match部分是不會有變化的,唯一變得就是區域,而這個區域的變化是由上方的年份決定的。我們構建下方的公式:

=CHOOSE(MATCH(B3,ROW($2010:$2014)&"年",),'2010年'!B2:M6,'2011年'!B2:M6,'2012年'!B2:M6,'2013年'!B2:M6,'2014年'!B2:M6)

要得到B3單元格年份對應的數據表格區域,首先要構建一個索引值(index_num),然後將各個sheet的數據依次添加進去即可。

最終的公式為:

{=INDEX(CHOOSE(MATCH(choose多表交叉查詢!B3,ROW($2010:$2014)&"年",),'2010年'!B2:M6,'2011年'!B2:M6,'2012年'!B2:M6,'2013年'!B2:M6,'2014年'!B2:M6),MATCH(B4,'2010年'!A2:A6,),MATCH(choose多表交叉查詢!B5,'2010年'!$B$1:$M$1,))}

完美解決問題,收工!

5分鐘,讓你在辦公室逆襲,這個Excel函數必須get

這個問題單純只用index+match嵌套也可以解決,大家寫寫看咯,畢竟這次的主角是CHOOSE函數。歡迎在評論區寫下你的公式。


分享到:


相關文章: