就一個(gè)字 我只說一次 恐怕聽見的人勾起了相思…… 諸君好,今晚我們聊Rang對象的“排序”…… 這年頭,小屁孩都寄道數(shù)據(jù)排序是數(shù)據(jù)處理過程中非常重要的一個(gè)環(huán)節(jié),Excel也直接提供了【排序】的基礎(chǔ)功能,VBA代碼與之相對應(yīng)的,便是Rang對象的Sort方法。 舉個(gè)栗子。如下圖所示,需要對B列的語文成績,按升序排列。 代碼如下: Sub SortDemo() Sort的語法如下: expression.Sort(Key1,
Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom,
MatchCase, Orientation, SortMethod, DataOption1, DataOption2,
DataOption3) 看起來略復(fù)雜……但最常用的其實(shí)只有三個(gè)部分。 舉參數(shù)Key1、Key2、Key3都是可選的,分別指定第一、二、三排序字段,作為區(qū)域名稱或Rang對象,比如此例中的[b1],確定要排序的值。 參數(shù)Order1、Order2、Order3可選,分別對應(yīng)Key1、2、3的排序次數(shù)。其中xlAscending為升序排列(默認(rèn)值),xlDescending為降序排列。 參數(shù)Header可選,指定第一個(gè)行是否包含標(biāo)題行。常用的有兩個(gè)值,lNo為不包含標(biāo)題行(默認(rèn)值),xlYes為包含標(biāo)題行。 這里需要說明的是,Rang對象的Sort方法一次最多可以指定3個(gè)排序字段……當(dāng)排序字段超過3個(gè)時(shí),通常執(zhí)行多次Sort方法進(jìn)行處理。 再舉個(gè)栗子(最近炒栗子吃過了……)如下圖所示,需要分別按照總分、語文、數(shù)學(xué)、英語的成績降序排序。 代碼如下:
小貼士: 1,進(jìn)行多次單元格對象的Sort排序時(shí),操作字段的次序和排序目的是反過來的,也就是說優(yōu)先排序級別越高的字段,總是放在最后進(jìn)行排序。例如該例中的總分、語文、數(shù)學(xué)和英語,代碼遍歷操作是英語、數(shù)學(xué)、語文和總分。 2,為了減少排序動(dòng)作的次數(shù),提高代碼運(yùn)算效率,除了可以屏蔽屏幕更新(Application.ScreenUpdating = False),也可以盡可能的在每次排序過程中指定多個(gè)字段,而非一個(gè)字段。 3,除了使用Rang對象進(jìn)行排序操作,也可以使用WorkSheet對象的Sort方法,該方法并沒有3個(gè)關(guān)鍵字的上限;另外,也可以使用數(shù)組構(gòu)建算法,Excel VBA常用的排序算法由冒泡排序、桶排序、快速排序等,我們后期會陸續(xù)聊到~~ ……擁抱,安…… |
|