中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Excel VBA解讀(54):排序——Sort方法

看看下面的Excel界面截圖,“排序”和“篩選”往往在一起,這大概是很多數(shù)據(jù)需要先排序后篩選吧!

在Excel 2007中新增了Sort對(duì)象,在錄制宏時(shí)Excel會(huì)自動(dòng)用到這個(gè)對(duì)象,但我們今天不會(huì)講解這個(gè)對(duì)象,待以后再詳解。今天主要講解Range對(duì)象的Sort方法,對(duì)于3個(gè)以內(nèi)的字段排序很方便。其語法如下:

Range對(duì)象.Sort(Key1,Order1 As XlSortOrder, _

Key2,Type,Order2As XlSortOrder, _

Key3,Order3As XlSortOrder, _

HeaderAs XlYesNoGuess, _

OrderCustom,MatchCase,_

OrientationAs XlSortOrientation, _

SortMethodAs XlSortMethod, _

DataOption1As XlSortDataOption, _

DataOption2As XlSortDataOption, _

DataOption3As XlSortDataOption)

說明:

所有參數(shù)均可選。

參數(shù)Key1、Key2、Key3指定排序字段,確定要排序的值,但參數(shù)Key2、Key3不能用于排序數(shù)據(jù)透視表。

參數(shù)Order1、Order2、Order3,分別確定參數(shù)Key1、Key2、Key3指定值的排序順序,相應(yīng)的常量值是xlDescending或者xlAscending(默認(rèn))。

參數(shù)Type,指定要排序的元素。僅用于數(shù)據(jù)透視表,可以指定為xlSortLabels或者xlSortValues。

參數(shù)Header,指定是否第一行包含標(biāo)題信息,默認(rèn)為xlNo。如果想要Excel嘗試確定標(biāo)題,那么指定其值為xlGuess。

參數(shù)OrderCustom,指定一個(gè)基于1的整數(shù)偏移量到自定義排序順序列表,使用自定義的排序順序進(jìn)行排序。

參數(shù)MatchCase,設(shè)置為True執(zhí)行區(qū)分大小寫的排序,為False則執(zhí)行不區(qū)分大小寫的排序,不能用于數(shù)據(jù)透視表。

參數(shù)Orientation,默認(rèn)按行進(jìn)行排序且數(shù)據(jù)是垂直排列。如果數(shù)據(jù)是水平排列的,通過指定該參數(shù)使其按列進(jìn)行排序。相應(yīng)的常量值是xlSortRows或者xlSortColumn。

參數(shù)SortMethod,指定排序方

法,適用于除英語以外的語言。

參數(shù)DataOption,有3個(gè)參數(shù),用來指定排序時(shí)對(duì)單元格中文本和數(shù)字的處理。如果指定其值為xlSortTextAsNumbers,將文本當(dāng)作數(shù)據(jù)進(jìn)行排序,默認(rèn)值是xlSortNormal,分別對(duì)數(shù)字和文本數(shù)據(jù)排序。不能應(yīng)用于數(shù)據(jù)透視表排序。參數(shù)DataOption1用于指定如何排序在Key1中指定的單元格區(qū)域中的文本。參數(shù)DataOption2,用于指定如何排序在Key2中指定的單元格區(qū)域中的文本。參數(shù)DataOption3,用于指定如何排序在Key3中指定的單元格區(qū)域中的文本。

下面以下圖所示的工作表來演示,以理解Sort方法及其參數(shù)。主要是介紹前面幾個(gè)參數(shù),其它的參數(shù)將會(huì)在以后的文章中涉及時(shí)再進(jìn)行相應(yīng)講解。

首先以“性別”作為排序字段,升序排列,并且第一行作為標(biāo)題信息,代碼如下:

運(yùn)行代碼后的結(jié)果如下圖:

接下來,再添加排序字段:以“性別”作為第1排序字段升序排列,以“總分”作為第2排序字段降序排列。代碼如下:

Excel將會(huì)以“性別”作為主要關(guān)鍵字升序排列,以“總分”作為次要關(guān)鍵字降序排列,即主關(guān)鍵字排序相同的,再以次關(guān)鍵字排序。結(jié)果如下圖所示:

示例1:查找滿足某項(xiàng)條件的所有數(shù)據(jù)并按順序排列

仍以上面的工作表為例,我們需要所有男同學(xué)的成績并以總分從高到低的順序排列。將排序與自動(dòng)篩選結(jié)合,可達(dá)到我們的目的。

代碼如下:

運(yùn)行代碼后的效果如下圖:

示例2:查找滿足某項(xiàng)條件的不重復(fù)數(shù)據(jù)

如本文開頭所示的工作表,要求獲取男女同學(xué)中總分最高的同學(xué)數(shù)據(jù)記錄。將排序與高級(jí)篩選相結(jié)合,可以達(dá)到我們的目的。

代碼中的:

rng.Columns(3)

表示單元格區(qū)域rng中的第3列,即“性別”字段列。

運(yùn)行代碼后的效果如下圖:

示例3:雙擊列標(biāo)題自動(dòng)排序

在本文的示例工作表中,雙擊列標(biāo)題,會(huì)升序排列該標(biāo)題下的內(nèi)容,再次雙擊該列標(biāo)題,降序排列。代碼如下:

說明:

代碼位于工作表模塊的Worksheet_BeforeDoubleClick事件中,在工作表單元格中雙擊鼠標(biāo)時(shí)發(fā)生該事件。(關(guān)于工作表事件,將在本系列文章后面的Worksheet對(duì)象系列中詳細(xì)講解)

在模塊頂部子過程外面聲明變量,表明該變量可用于該模塊下所有的子過程。本程序代碼之所以在模塊頂部聲明變量,是為了保存雙擊事件發(fā)生前變量的值,以便與雙擊事件發(fā)生后相關(guān)值比較,從而實(shí)現(xiàn)升序和降序的切換。(關(guān)于變量作用范圍,將在本系列文章后面詳細(xì)講解)

Range('A1').CurrentRegion獲取單元格A1所在的區(qū)域,可參閱《ExcelVBA解讀(38):快速確定自已的地盤——CurrentRegion屬性》。

下面的小視頻演示了代碼運(yùn)行的效果:

示例4:根據(jù)活動(dòng)單元格排序

在上文所示的工作表中,當(dāng)單元格在A1:G10區(qū)域內(nèi)移動(dòng)時(shí),將根據(jù)活動(dòng)單元格所處的位置對(duì)其所在列按降序排序。代碼如下:

說明:

代碼位于工作表模塊的Worksheet_SelectionChange事件中,當(dāng)活動(dòng)單元格發(fā)生變化時(shí)觸發(fā)該事件。(關(guān)于工作表事件,將在本系列文章后面的Worksheet對(duì)象系列中詳細(xì)講解)

下面的小視頻演示了代碼運(yùn)行的效果:

示例5:根據(jù)顏色排序

這是Excel 2013 VBA幫助文檔中Sort方法的示例,按單元格的背景色進(jìn)行排序。示例代碼如下:

說明:

代碼中,首先使用ColorIndex屬性獲取列A中單元格顏色索引值,并將這些值存儲(chǔ)在列C中的相應(yīng)行,然后對(duì)列C排序,從而達(dá)到對(duì)列A按顏色排序的效果。

ClearContents方法用于清除單元格中的內(nèi)容。

代碼運(yùn)行的過程及結(jié)果如下圖所示:

示例6:排序有部分相同數(shù)據(jù)的行

如下圖所示,課程的組合有3種,分別是“語文、數(shù)學(xué)、英語”,“數(shù)學(xué)、體育、歷史”,“體育、化學(xué)、生物”,但上課的時(shí)間不同,要求將相同組合的課程排在一起。

代碼如下:

說明:

技巧:將多列組合成一列,并將該列作為排序列,從而達(dá)到相同數(shù)據(jù)排序在一起的目的。

示例7:自定義排序

如下圖所示,我們想按單元格區(qū)域I1:I5中的順序?qū)卧駞^(qū)域A1:G10進(jìn)行排序。也就是說,無論數(shù)據(jù)如何變化,在單元格區(qū)域I1:I5中的5名同學(xué)都是按照這樣的順序排列。

代碼如下:

說明:

這段程序代碼中有3個(gè)我們以前沒有見過的方法,即Application對(duì)象的AddCustomList方法、GetCustomListNum方法、DeleteCustomList方法。與排序相匹配使用的。(注:也與自動(dòng)填充相匹配)

AddCustomList方法的語法如下:

Application對(duì)象.AddCustomList(ListArray,ByRow)

添加自定義列表,用于自定義自動(dòng)填充或自定義排序。其中,參數(shù)ListArray必需,指定自定義排序數(shù)據(jù),可以是字符串?dāng)?shù)組或者Range對(duì)象。參數(shù)ByRow可選,僅用于當(dāng)參數(shù)ListArray是Range對(duì)象時(shí);設(shè)置為True時(shí)從單元格區(qū)域中的行創(chuàng)建自定義列表,設(shè)置為False時(shí)從單元格區(qū)域的列創(chuàng)建自定義列表;如果忽略該參數(shù)且單元格區(qū)域中的列比行多,那么將從單元格區(qū)域行創(chuàng)建自定義列表。

注意,如果試圖添加的列表已存在,那么該方法不會(huì)執(zhí)行任何操作,會(huì)報(bào)出錯(cuò)消息。

GetCustomListNum方法的語法如下:

Application對(duì)象.GetCustomListNum(ListArray)

返回字符串?dāng)?shù)組的自定義列表編號(hào),可以用于匹配內(nèi)置列表和自定義列表。其中,參數(shù)ListArray必需,指定字符串?dāng)?shù)組。

注意,如果沒有相應(yīng)的列表,那么該方法將導(dǎo)致錯(cuò)誤。

DeleteCustomList方法的語法如下:

Application對(duì)象.DeleteCustomList(ListNum)

刪除自定義列表。其中,參數(shù)ListNum必需,指定自定義列表編號(hào)。編號(hào)必須大于或等于5,因?yàn)镋xcel有4個(gè)內(nèi)置的不可刪除的自定義列表。

注意,如果列表編號(hào)小于5或者沒有相匹配的自定義列表,那么該方法將導(dǎo)致錯(cuò)誤。(這是Excel 2013幫助文檔中的說明,實(shí)際上Excel 2007中就有11個(gè)內(nèi)置的不可刪除的列表。)

運(yùn)行代碼后的結(jié)果如下圖:

--------------------------------------

如果您對(duì)本文介紹的內(nèi)容還有什么好的示例,歡迎發(fā)送郵件給我:xhdsxfjy@163.com

也可以在本文下方留言,提出您的看法或建議。

本文屬原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系我或者注明出處。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VFP控制Excel排序
Excel VBA教程:SortSpecial方法
VBA: 使用Sort方法進(jìn)行排序
眼見為實(shí)?Excel自定義格式告訴你,別太天真!
Excel2013序號(hào)自動(dòng)生成的方法
處理Excel數(shù)據(jù)我有妙招,輕松幫你搞定復(fù)雜數(shù)據(jù)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服