位置:首頁(yè) > 軟件操作教程 > 辦公軟件 > Excel > 問(wèn)題詳情

用Excel函數(shù)實(shí)現(xiàn)排序與篩選

提問(wèn)人:周麗平發(fā)布時(shí)間:2021-08-17

一、用函數(shù)實(shí)現(xiàn)排序

題目

如有一張工資表,A2:F501,共6列500行3000個(gè)單元格。表頭A1為姓名代碼(1至500)、B1為姓名、C1為津貼、D1為獎(jiǎng)金、E1為工資、F1收入合計(jì)。現(xiàn)要求對(duì)職工收入從多到少排序,且在職工總收入相同時(shí)再按工資從多到少排序,在職工總收入和工資相同時(shí)再按獎(jiǎng)金從多到少排序,在職工職工總收入和工資、獎(jiǎng)金相同時(shí)再按津貼從多到少排序。

方法

G1單元格填入公式

“=if(F2=0,10^100,INT(CONCATENATE(999-f2,999-e2,999-d2,999-c2)))”,

CONCATENATE是一個(gè)拼合函數(shù),可以把30個(gè)以下的單元的數(shù)據(jù)拼合成一個(gè)數(shù)據(jù),這些被拼合的數(shù)據(jù)之間用逗號(hào)分開。用f2、e2等被拼合的數(shù)據(jù)用999來(lái)減,是為了使它們位數(shù)相同。(假定任何一個(gè)職工的總收入少于899元)。被拼合成的函數(shù)是文本函數(shù),CONCATENATE與INT函數(shù)套用是為了使文本轉(zhuǎn)換為數(shù)字。最外層的if函數(shù)是排序時(shí)用來(lái)剔除不進(jìn)行排序的記錄,在本例中指收入為零的記錄。(在上文提到的職工年齡排序,則公式改為“if(f2="退休",10^100,.....)”,即剔除了退休職工。)

第二步把G1單元格的公式拖放到G500單元格(最簡(jiǎn)便的方法是點(diǎn)擊G1單元格后向G1單元格右下方移動(dòng)鼠標(biāo),見到黑十時(shí)雙擊鼠標(biāo)就完成了G1到G500的填充)。

第三步在在H2單元填入公式“=MATCH(SMALL(G:G,ROW(A1)),G:G,0)”與第二步一樣拖放到H501單元格。此公式實(shí)際上是把三列公式合成一列公式,ROW(A1)即為A1的行數(shù)是1,隨著向下拖放依次為2、3、4...,SMALL(G:G,ROW(A1))為G列中最小的數(shù)隨著向下拖放依次為第2、第3、..小的數(shù),MATCH(SMALL(G:G,ROW(A1)),G:G,0)即為G列各行的數(shù)據(jù)中最小、第2、第3小等的數(shù)據(jù)在第幾行。

第四步把A1至F1單元格的表頭復(fù)制到I1至N1單元格,在I2單元格輸入公式“=INDEX($A$2:$F$501,$H2,COLUMN(A$1))”INDEX函數(shù)是一個(gè)引用函數(shù),即把$A$2:$F$501單元格列陣第$H2行第COLUMN(A$1)列的數(shù)據(jù)放入I2單元格。然后把I2單元格的公式拖放到N2單元格,點(diǎn)擊N2單元格后向N2單元格右下方移動(dòng)鼠標(biāo)見到黑十時(shí)雙擊鼠標(biāo)就完成了I2到N501單元格的填充到此全部完成。

以上敘述看似繁雜實(shí)際非常簡(jiǎn)單,只要把A1至F1的表頭復(fù)制到I1至N1單元格,再分別在G1、H2、I2單元格輸入公式然后向下拖放,即使對(duì)EXCEL應(yīng)用不熟練的同志一分鍾內(nèi)便能完成。

對(duì)上述程序稍作變化還可得到更多用度。上面例子數(shù)據(jù)是從大到小排列的,如H列的函數(shù)中的SMALL改為L(zhǎng)ARGE,上面例子數(shù)據(jù)就從小到大排列了。如H2單元格的公式改為“=IF(O1=1,MATCH(SMALL(G:G,ROW(A1)),G:G,0),MATCH(LARGE(G:G,ROW(A1)),G:G,0))”

并把H2單元格的公式向下拖放。這樣在O1單元格輸入1上面例子數(shù)據(jù)是從大到小排列的,O1單元格輸入1以外的數(shù)上面例子數(shù)據(jù)就從小到大排列了。

如在H列前插入若干列,如插入一列,則現(xiàn)在的H列輸入類似G列的公式,例如

“=if(F2=0,10^100,d2)”,現(xiàn)在的I列的公式改為“=IF(P1=1,MATCH(SMALL(G:G,ROW(A1)),G:G,0),

MATCH(SMALL(H:H,ROW(A1)),H:H,0)))”

即在P單元格輸入1以外的值就實(shí)現(xiàn)了按獎(jiǎng)金大小排序.這樣只要通過(guò)改變P1(原來(lái)的O1單元格)單元格內(nèi)容的改變就能立即得到按不同要求的排序。

二、用函數(shù)實(shí)現(xiàn)篩選

題目

如有一張職工名冊(cè)表,A2:F501,共6列500行3000個(gè)單元格。表頭A1為姓名代碼(1至500)、B1為姓名、C1為性別、D1為年齡、E1為學(xué)歷、F1職稱?,F(xiàn)要求對(duì)職工的性別、年齡、學(xué)歷、職稱進(jìn)行交錯(cuò)篩選,例如要求在同一張表上篩選出1、女的年齡在22歲到45歲,男的年齡在25歲到50歲,2、女博士,3、男博士后。

方法

第一步在G2單元格輸入公式”=IF(OR(AND(C2="女",D2>=22,D2<=45),AND(C2="男",

D2>=25,D2<=50)),ROW(A1),0)“,在H2單元格輸入公式”=IF(AND(C2="女",E2="博士"),

ROW(B1),0)“,在I2單元格輸入公式”=IF(AND(C2="男",E2="博士后"),ROW(B1),0)“。在J2單元格輸入公式“=IF(K$2=1,LARGE(G:G,ROW(A1)),IF(K$2=2,LARGE(H:H,ROW(A1)),

IF(K$2=3,LARGE(I:I,ROW(A1)),0)))”然后用上述提到的方法向下拖放。G、H、I列的公式的含義就是凡符合篩選條件的行記錄下行號(hào)否則為零,J列的公式的含義根據(jù)K2的數(shù)值選擇G、H、I中的一列進(jìn)行排序并把不合條件的行除去。

第二步在K1單元格輸文字”篩選選擇”,A1到F1表頭復(fù)制到L1到Q1,在L2單元格輸入

公式“=IF($J2=0,0,INDEX($A$2:$F$501,$J2,COLUMN(A$1)))”,然后向右拖放到Q2,再向下拖放。INDEX函數(shù)的含義上文已說(shuō)明。

第三步在P1單元格輸入1或2或3便可實(shí)現(xiàn)上述三種篩選。

繼續(xù)查找其他問(wèn)題的答案?

回復(fù)(0)
返回頂部