原文標(biāo)題:《夸爆!哪位 Excel 高人琢磨出的這個(gè)數(shù)據(jù)整理技巧,太有用了!》
大家好,這里是秋葉編輯部~
今天的分享,是來(lái)自一位地產(chǎn)營(yíng)銷人的提問(wèn)。
「我想根據(jù)來(lái)訪登記表,自動(dòng)晾曬實(shí)時(shí)到訪人次榜單,能做到嗎?」
案例說(shuō)明:
上圖中,需對(duì) C 列進(jìn)行條件計(jì)數(shù),根據(jù)結(jié)果從大到小依次獲取對(duì)應(yīng)置業(yè)顧問(wèn)姓名。
我們姑且稱這一問(wèn)題為「分組統(tǒng)計(jì)并排序問(wèn)題」。
該問(wèn)題十分復(fù)雜,其難點(diǎn)至少包括以下三點(diǎn):
? 必須進(jìn)行條件計(jì)數(shù),但計(jì)數(shù)的條件值需要從數(shù)據(jù)列表中獲取,除非使用輔助列,否則沒(méi)有現(xiàn)成的人員清單可供引用;
? 人員是多次重復(fù)的,不同置業(yè)顧問(wèn)的到訪次數(shù)也可能是重復(fù),但求值結(jié)果中的人名都必須是唯一的,公式需有去重功能;
? 必須完成按到訪次數(shù)大小排序,再索引計(jì)數(shù)值對(duì)應(yīng)的置業(yè)顧問(wèn)姓名文本,實(shí)現(xiàn)數(shù)值到文本的轉(zhuǎn)換。
分組統(tǒng)計(jì)并排序問(wèn)題在不同 Excel 版本中有不同的解題公式,其難易也不盡相同,接下來(lái),小花就為大家逐一講解。
1、INDEX+MOD+LARGE 法
此方法適用于 Excel 2019 及以下版本,僅使用常見(jiàn)的幾個(gè)「老函數(shù)」組合,即可實(shí)現(xiàn)對(duì)復(fù)雜去重排序問(wèn)題的求解。
但其理解難度頗大,需要小伙伴們沉心靜氣,跟隨小花的拆解,慢慢消化其中的知識(shí)點(diǎn)。
公式:
=INDEX($C$C,MOD(LARGE(COUNTIF($C$2$C$300$C$2$C$300)*(COUNTIF(INDIRECT("C2:C"&ROW($C$2$C$300))$C$2$C$300)=1)+ROW($C$2$C$300)%ROW()-2)1)*10000)
公式說(shuō)明:
? COUNTIF($C$2:$C$300,$C$2:$C$300)
該片段執(zhí)行一組條件計(jì)數(shù) COUNTIF 運(yùn)算,分別以 C2:C300 的每一個(gè)單元格為條件值,以其本身為計(jì)數(shù)范圍,統(tǒng)計(jì) C2:C300 中每一個(gè)值出現(xiàn)的次數(shù),即每個(gè)置業(yè)顧問(wèn)的客戶到訪次數(shù)。
不言而喻,此處的到訪次數(shù)數(shù)組中的每個(gè)值都是多次重復(fù)的,出現(xiàn)頻數(shù)即為重復(fù)次數(shù)。
? COUNTIF(INDIRECT("C2:C"&ROW($C$2:$C$300)),$C$2:$C$300)=1
同樣執(zhí)行一組條件計(jì)數(shù) COUNTIF 運(yùn)算,遍歷 C2:C300,通過(guò) INDIRECT 函數(shù)構(gòu)建一個(gè)從 C2 到當(dāng)前單元格的引用區(qū)域作為計(jì)數(shù)范圍,再使用 COUNTIF 函數(shù)統(tǒng)計(jì)當(dāng)前值在單元格范圍中出現(xiàn)的次數(shù)。
由于計(jì)數(shù)范圍總是包含當(dāng)前單元格,其結(jié)果必然≥1;
如果 COUNTIF 函數(shù)的返回值為 1,則說(shuō)明,當(dāng)前單元格是首次出現(xiàn)該值的位置;
如果大于 1,則說(shuō)明在該單元格之上,已經(jīng)出現(xiàn)過(guò)該值了。
最后將 COUNTIF 函數(shù)的返回值與 1 進(jìn)行對(duì)比,將數(shù)值轉(zhuǎn)化為邏輯值,所有的 TRUE 值剛好標(biāo)記出每個(gè)唯一值首次出現(xiàn)的位置。
? ①*(②)
由于①頻數(shù)數(shù)組會(huì)多次重復(fù),無(wú)法直接通過(guò) LARGE 函數(shù)取排位值;
而②為邏輯數(shù)組,僅首次出現(xiàn)位置處為 TRUE(計(jì)算時(shí)為 1),其余為 FALSE(計(jì)算時(shí)為 0);
于是①*②剛好實(shí)現(xiàn)對(duì)①的去重,實(shí)現(xiàn)僅首次出現(xiàn)位置保留有效頻數(shù),其余均為 0。
至此,LARGE 函數(shù)已經(jīng)具備了發(fā)揮作用的條件,但如何將唯一的頻數(shù)值與所在行號(hào)掛鉤,實(shí)現(xiàn)第 k 大數(shù)值中包含其位置值信息呢?
? ③+ROW($C$2:$C$300)%%
ROW (C2:C300) 返回一組行號(hào)值,兩個(gè) %% 等同于除以 10000,將它轉(zhuǎn)化為小數(shù),再與③相加,既不影響頻數(shù)值之間的大小排序,又能指示當(dāng)前值位置信息。
? LARGE(④,ROW()-2)
ROW ()-2 返回一個(gè) k 值,F(xiàn)3 單元格的 k 為 1,F(xiàn)4 單元格的 k 為 2,逐次增大,而 LARGE 函數(shù)依次?、苤械?k 大的值。
? MOD(⑤,1)*10000
此處是對(duì)片段④的反運(yùn)算,通過(guò)對(duì) 1 取余再乘以 10000,換算出被兩個(gè) %% 轉(zhuǎn)化為小數(shù)的 ROW (C2:C300) 的行號(hào)值。
? INDEX(C:C,⑥)
INDEX 函數(shù)根據(jù)片段⑥返回的行號(hào)值索引 C 列對(duì)應(yīng)位置,即可得到出現(xiàn)頻數(shù)第 k 高的置業(yè)顧問(wèn)姓名,問(wèn)題得解。
2、寫(xiě)在最后
以上,就是 Excel 2019 及以下版本用戶解決分組統(tǒng)計(jì)并排序問(wèn)題的正解,思路大致如下:
? 以計(jì)數(shù)范圍為計(jì)數(shù)條件,使用 COUNTIF 統(tǒng)計(jì)出一組重復(fù)的頻數(shù)數(shù)組;
? 用 INDIRECT 函數(shù)構(gòu)建動(dòng)態(tài)擴(kuò)展的計(jì)數(shù)范圍,判斷當(dāng)前值是否為首次出現(xiàn);
? ①和②相乘,實(shí)現(xiàn)去重,加上代表行號(hào)的小數(shù),以標(biāo)識(shí)文本位置;
? 使用 LARGE 獲取第 k 大值,再用 MOD 取余獲取文本位置行號(hào),最后用 INDEX 進(jìn)行索引。
本文分享的公式在 Excel 屬于高難度級(jí)別,一時(shí)難以理解也無(wú)需焦慮,只要多看幾次,用心理解,相信每個(gè)小伙伴都能最終將其中的原理和思路內(nèi)化為自己的修行和能力。
當(dāng)然了,更高級(jí)版本 Excel 中還有其他更簡(jiǎn)潔的解題公式,小花將在下一篇文章中繼續(xù)分享,敬請(qǐng)期待吧!
本文來(lái)自微信公眾號(hào):秋葉 Excel(ID:excel100),作者:小花
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。