Excel 表格自动排序的两种方法
原文標(biāo)題:《Excel 表格還能自動排序?這 2 種方法讓你豎起大拇指!》
你知道嗎?365 版 Excel 新增了一個神級函數(shù),SORT!
它是一個專門用于排序的函數(shù)。
然而問題是,很多小伙伴所使用的的 Excel 并非 365 版,而是 19 版甚至更早期的版本。
沒有神級函數(shù)加持,能不能實現(xiàn)對數(shù)據(jù)的自動排序呢?
今天小花就分享兩個低版本 Excel 專用的排序公式給大家。
LOOKUP+RANK 法
LOOKUP 函數(shù)的兩分法幾乎能解決查詢相關(guān)的所有問題,而自動排序,可以認(rèn)為是按排序值查詢,自然也不在話下!
=LOOKUP(1,0/(RANK($B$2:$B$8,$B$2:$B$8)=ROW()-1),$A$2:$A$8)
①公式說明:
RANK($B$2:$B$8,$B$2:$B$8)
顯然,這是一個數(shù)組公式,由于 LOOKUP 自帶數(shù)組運算屬性,所以無需按【Ctrl+Shift+Enter】來執(zhí)行運算也可以使得排名函數(shù) RANK 返回一組排名值。
RANK 函數(shù)的排序值和排序范圍參數(shù)都是 B2:B8,通過數(shù)組運算,返回表示 B2:B8 中的每一個值對應(yīng)排序大小的序數(shù)值組 {2;3;1;5;4;6;7}。
② 公式說明:
0/(①=ROW()-1)
ROW-1 表示當(dāng)前行號-1,從 E2 到 E8 依次為 1-7,即 E2 所要查找的排名值為 1。
將①中結(jié)果 {2;3;1;5;4;6;7} 與之比對,相等返回 TRUE,不相等返回 FALSE,即:
{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE};
再使用 0 除以這組數(shù),除法運算中,TRUE=1,F(xiàn)ALSE=0,即得出:
0/{0;0;1;0;0;0;0},
由于 0 不能作為除數(shù),進一步得到:
{#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}。
注意:該數(shù)組僅在當(dāng)前所要查找的排名值 1 所對應(yīng)位置處為 0,其余均為錯誤值。
這是我們構(gòu)建 0/(①=ROW ()-1) 這一查詢范圍的核心目的,只有這樣,LOOKUP 函數(shù)才能正確查找。
③ 公式說明:
LOOKUP(1②,$A$2:$A$8)
LOOKUP 通過將查詢范圍②與查詢值 1 匹配,找到②中小于且最接近于查詢值的數(shù)值位置,返回結(jié)果范圍 A2:A8 對應(yīng)位置的值,且過程中自動忽略②中的錯誤值。
由于②中僅有第三個值為 0,其余均為錯誤值#DIV / 0!,所以 LOOKUP 返回 A2:A8 中的第三個值,即 A4 單元格「陶海波」。
LOOKUP+RANK 法中的核心是查詢范圍(公式片段②)的構(gòu)建,使用 RANK 函數(shù)生成一組排名值,再套用 LOOKUP 的兩分法來完成查詢計算,你學(xué)會了嗎?
INDEX+LARGE 法
使用 LOOKUP+RANK 法進行自動排序,有一個明顯的漏洞,那就是當(dāng)出現(xiàn)相同排名時,公式結(jié)果就會出錯。
這時候,我們可以用 INDEX+LARGE 函數(shù)來構(gòu)建另一個數(shù)組公式。
PS. 數(shù)組公式輸入后,需按【Ctrl+Shift+Enter】才能正確計算。
{=INDEX($A$2:$A$8,MOD(LARGE($B$2:$B$8+ROW($1:$7)%,ROW()-1),1)*100)}
①公式說明:
$B$2:$B$8+ROW($1:$7)%
ROW ($1:$7) 返回一組 1 到 7 的有序數(shù)組,表示每一個數(shù)值的序號,該序號值最終還將作為 INDEX 的索引值。
「%」是 "/100" 的簡寫,于是 $B$2:$B$8+ROW ($1:$7)% 相當(dāng)于給 B2:B8 的每個數(shù)以此加上尾數(shù) 0.01-0.07,得到:
{64.01;74.02;74.03;37.04;46.05;19.06;2.07}
由于案例中的數(shù)值都為整數(shù),加上不同的尾數(shù)可以確保這些數(shù)值彼此不等。
PS. 事實上,只需保證所加的尾數(shù)始終小于需要排序數(shù)值的有效數(shù)位,就能避免數(shù)值相等導(dǎo)致公式錯誤。
② 公式說明:
LARGE①,ROW()-1)
LARGE 函數(shù)用于返回數(shù)據(jù)組從大到小排列中指定位次的數(shù)值。
E2 單元格公式中的 ROW ()-1 返回當(dāng)前行號減 1,即為 1,表示通過 LARGE 函數(shù)返回 {64.01;74.02;74.03;37.04;46.05;19.06;2.07} 中第 1 大的數(shù)值 74.03,E3:E8 單元格則以此類推,取第 2 到第 7 大的數(shù)值。
③ 公式說明:
INDEX($A$2:$A$8,MOD②1)*100
MOD 函數(shù)為取余函數(shù),MOD (②,1),即對②除以 1 取余數(shù),得到我們在片段①中通過 ROW ($1:$7)% 給 B2:B8 加上的尾數(shù),將這個尾數(shù)乘以 100,可還原為 ROW ($1:$7) 本身,它表示 B2:B8 中每一個數(shù)值的序號。
E2 單元格中,對 74.03 除以 1 取余數(shù)為 0.03,乘以 100,得到 3,它表示最大的數(shù)是 B2:B8 的第 3 個數(shù)。
此時再用 INDEX 提取 A2:A8 的第 3 個數(shù)即可。
我們知道,第二個數(shù) B3 和第三個數(shù) B4 都是 74,都最大。
但由于 ROW ($1:$7)% 為二者所加上的尾數(shù)分別為 0.02 和 0.03,于是 B3 作為最大的數(shù)排列在 E2 單元格,B4 被處理為第 2 大的數(shù)排列在 E3 單元格中。
由此解決了數(shù)值相等無法依次排序的問題,這就是 INDEX+LARGE 法的秘訣,你學(xué)會了嗎?
以上,就是小花分享的兩個低版本 Excel 專用排序公式,要點如下:
? 通過 RANK 函數(shù)的數(shù)組運算生成一組排名值,再構(gòu)建 LOOKUP 的 1/0 查詢結(jié)構(gòu),實現(xiàn)對數(shù)據(jù)的自動排序;
? 通過 ROW% 來為原數(shù)據(jù)添加表示其序數(shù)的尾數(shù),使數(shù)據(jù)彼此不等,然后用 LARGE 取指定位次的數(shù)值,再用 MOD 函數(shù)取余 * 100 還原序數(shù)值,最后用 INDEX 實現(xiàn)排序。
以上公式雖略顯復(fù)雜,但經(jīng)過小花詳細(xì)解析,相信小伙伴們一定能理清吃透,收入囊中。
本文來自微信公眾號:秋葉 Excel (ID:excel100),作者:小花
總結(jié)
以上是生活随笔為你收集整理的Excel 表格自动排序的两种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人博客域名迁移说明 www.painc
- 下一篇: NVIDIA史上最鸡肋、还特长寿的显卡: