
都進來看看!這招以一敵五的Excel絕技,連透視表都甘拜下風(fēng)!
在武俠小說里,經(jīng)常會有一種情況——帶著主角光環(huán)的人,總是憑借“一招鮮,吃遍天”的“偉大漏洞”,處處逢兇化吉。都說“職場如戰(zhàn)場”,來到了職場,每一位EXCELER,面對來自四面八方的工作壓力,也算是“處處逢兇”了。那么能不能也有這么“一招”,讓同學(xué)們“隨時化吉”呢?跟上E圖表述的步伐,來學(xué)習(xí)一招“以不變應(yīng)萬變”的絕技吧。
【正文】
不多廢話,切入主題。同學(xué)們知道在日常表格中,有一種信息內(nèi)容叫做“序號”嗎?我們今天就來“玩”這個序號,我保證你會“愛”上這個“小操作”的。
添加序號的方法
在日常生活中,我們每個人添加序號的方式可能都不一樣,主要歸納起來有下面幾種。
"這是較常規(guī)的幾種添加序號的方法,但是也僅限于“常規(guī)”。而我們今天要學(xué)的內(nèi)容,就是非常規(guī)的序號,而這樣的序號可以給我們帶來“前所未有且簡單”的體驗。
1“動態(tài)”提取不重復(fù)的值并統(tǒng)計
"遇到這種情況,大部分同學(xué)會使用兩種方法解決:
B22單元格函數(shù):
=SUMIF($E$2:$E$16,A22,$F$2:$F$16)
"第二種:直接使用數(shù)組函數(shù),得到不重復(fù)的費用類別,再使用SUMIF函數(shù)求和。
"A22單元格函數(shù):{=IFERROR(INDEX($E$2:$E$16,SMALL(IF(MATCH($E$2:$E$16,$E$2:$E$16,0)=ROW($1:$15),ROW($1:$15),99^9),ROW(A1))),””)} 輸入完成后,按數(shù)組函數(shù)的結(jié)束鍵CTRL+SHIFT+ENTER三鍵結(jié)束。 你會選擇哪種呢?如果說我們需要在源數(shù)據(jù)更新后,也能實現(xiàn)自動統(tǒng)計的話,肯定是選擇函數(shù)的做法,但是這個數(shù)組函數(shù)真的不是初學(xué)者能夠駕馭的(上面的數(shù)組函數(shù)不是今天的主題,故不作展開說明),下面我們就用序號的方法來處理這個問題。
""2
“動態(tài)”分類提取明細(xì)
按照上面的思路,我們再看一個工作中經(jīng)常會遇到的問題。如下圖所示,我們需要按照不同的費用類別,提取出對應(yīng)的明細(xì)數(shù)據(jù)。
"步驟1:同樣在數(shù)據(jù)首列前插入空白列。在A2單元格輸入函數(shù):=IF(F2=$G$19,MAX($A$1:A1)+1,””),下拉填充公式,得到滿足條件的記錄序號。當(dāng)數(shù)據(jù)中的費用類別和被統(tǒng)計項G19單元格(注意使用絕對引用)相同時,利用MAX函數(shù)標(biāo)記序號。 步驟2:在B22單元格輸入函數(shù):=IFERROR(VLOOKUP(ROW(B1),$A$1:$G$16,MATCH(B$21,$A$1:$G$1,0),0),””),下拉右拉填充公式。這里依然是使用VLOOKUP函數(shù)索引ROW函數(shù),再利用MATCH函數(shù),找到表頭的順序號,作為VLOOKUP在索引區(qū)域中被索引的列序。當(dāng)然,這個表格依舊是可以實現(xiàn)動態(tài)更新的。
"3
“動態(tài)”多條件提取明細(xì)
同樣的思路再來“玩”一個多條件的索引。如下圖所示,需要提取出滿足多個條件的明細(xì)數(shù)據(jù)。
"步驟1:同樣在A2單元格輸入函數(shù):=IF(AND(C2>=$D$21,C2<=$D$22,E2=$F$21,F2=$F$22),MAX($A$1:A1)+1,””),使用AND函數(shù),使IF函數(shù)形成多條件同時滿足與否的判斷,標(biāo)記出多條件都滿足的明細(xì)記錄序號。 步驟2:在B25單元格輸入函數(shù):=IFERROR(VLOOKUP(ROW(B1),$A$1:$G$16,MATCH(B$24,$A$1:$G$1,0),0),””),此函數(shù)同案例2的函數(shù)是一樣的,我們就不多介紹了。看一下動態(tài)的效果吧。
"4
“動態(tài)”將明細(xì)按金額大小排序
"給一列數(shù)字排名,估計很多同學(xué)都知道用RANK函數(shù)吧,但是如果有重復(fù)的數(shù)字,就需要RANK+COUNTIF函數(shù)的嵌套使用,起到不重復(fù)排名的效果,這個案例就是利用了這個原理。 步驟1:在A3單元格輸入函數(shù):=RANK(D3,$D$3:$D$17,IF($H$1=”降序”,0,1))+COUNTIF($D$3:D3,D3)-1,先通過RANK函數(shù)得到數(shù)值的排名,用IF函數(shù)判斷H1單元格的數(shù)據(jù),如果是“降序”則返為“0”,如果是“升序”或者單元格為空,則默認(rèn)返回“1”。COUNTIF函數(shù)是去重排名的關(guān)鍵,同樣是利用絕對引用固定區(qū)域中開始單元格的位置,確定數(shù)字出現(xiàn)的次數(shù),如果第一次出現(xiàn),1-1=0,則直接返回RANK函數(shù)得到的排名。第二次出現(xiàn)就是2-1=1,則在RANK函數(shù)排名的基礎(chǔ)上+1。這樣就完成了重復(fù)排名增加1位次的過程。 步驟2:在F3單元格輸入函數(shù):=IFERROR(VLOOKUP(ROW(F1),$A$2:$D$17,MATCH(F$2,$A$2:$D$2,0),0),””),這個函數(shù)的原理依然同案例2的索引過程。 通過選擇升序降序的選項,做到動態(tài)羅列數(shù)據(jù)的過程,如下:
"5
“動態(tài)”插入空白行
對于這個需求,現(xiàn)下最常用的方法是“添加序號排序的方法”,如下:
"但是這種方式有一個弊端,如果插入的空白行不固定,那就需要頻繁的操作,而且序號的粘貼過程也比較麻煩,插入幾行就要復(fù)制幾次序號。所以我們就一起來看一個函數(shù)+序號動態(tài)插入空白行的案例。
"步驟1:在A列給源數(shù)據(jù)表添加序號,在A3單元格輸入函數(shù):=ROW(A1),然后下拉公式填充。 步驟2:在F2單元格輸入“輔助”,在F3單元格輸入函數(shù):=IF(COUNTIF($F$2:F2,F2)<$I$1+1,MAX(F2:F2),F2+1),依然是利用了COUNTIF結(jié)合絕對引用的做法,判斷從起始單元格F2到上一個單元格為止的區(qū)域中,上一個單元格的值出現(xiàn)了幾次,如果值小于間隔行數(shù)+1,就顯示已經(jīng)出現(xiàn)的最大序號(用MAX函數(shù)引出),否則序號累計1,就是函數(shù)中F2+1的運算。然后下拉填充函數(shù),如果數(shù)據(jù)較多,這里介紹一個利用“名稱框”代替下拉填充的過程。 <小常識> 在一個單元格中輸入函數(shù),然后選擇“名稱框”,輸入需要填充的區(qū)域地址,按回車鍵,再按CTRL+D(向下填充),也可以按CTRL+R(向右填充),即可完成對區(qū)域的填充了。
"步驟3:在G3單元格輸入函數(shù):=IFERROR(IF(AND($F3<>””,$F3<>$F2),VLOOKUP($F3+1,$A$2:$D$17,MATCH(G$2,$A$2:$D$2,0),0),””),””),使用AND函數(shù),使IF函數(shù)形成多條件同時滿足與否的判斷。當(dāng)F3單元格不為空,且F3單元格不等于上一個單元格的值的時候,使用VLOOKUP+MATCH函數(shù)的嵌套引用明細(xì)表內(nèi)容。填充函數(shù)后就是下面的效果了。
"<小常識> 上面的5個案例都是一個數(shù)據(jù)源,5類數(shù)據(jù)處理的需求我們只用了一招“添加序號”的方式,輕易破解,其實這個“添加序號”就是我們經(jīng)常說的“輔助列”。
“輔助列”在原數(shù)據(jù)中,一般在首列之前,或者末列之后。目的是在不改變原數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,為了解決一些不能通過原數(shù)據(jù)直接處理的數(shù)據(jù)分析要求,而添加輔助計算的信息內(nèi)容。

