Excel VBA多關鍵字資料排序

2021-10-03 02:30:26 字數 2044 閱讀 9204

每天更新excel vba經典**,祝你工作和學習更輕鬆!

使用range物件的sort方法對區域進行排序時,同時最多只能指定3個關鍵字,當需要按照超過3個關鍵字對區域進行排序時,可以通過多次執行sort方法實現。需要注意的是,在排序時應按照各關鍵字的倒敘順序。例如,如果按照a→b→c→d的關鍵字順序進行排序,則應按d→c→b→a的順序執行sort方法。

圖1 帶排序資料

如圖1所示資料表中,需要按"總成績"、「基礎知識」、"教育學"和"心理學"的成績降序排列,例項**如下。

sub sortbykeysa(

)with range(

"a1"

) .sort key1:

="心理學", order1:

=xldescending, header:

=xlyes

.sort key1:

="教育學", order1:

=xldescending, header:

=xlyes

.sort key1:

="基礎知識", order1:

=xldescending, header:

=xlyes

.sort key1:

="總成績", order1:

=xldescending, header:

=xlyes

endwith

endsub

執行以上過程,結果如圖2所示。

圖2 資料排序結果​

使用range物件的sort方法對區域進行超過3個關鍵字排序時,需要多次執行sort方法,而通過worksheet物件的sort方法則可以一次完成。如下示例**實現與上面示例**相同的排序功能。

sub morekeysort(

)with activesheet.sort.sortfields

.clear

.add key

:=range(

"g1"

), sorton:

=xlsortonvalues, order:

=xldescending

.add key

:=range(

"b1"

), sorton:

=xlsortonvalues, order:

=xldescending

.add key

:=range(

"c1"

), sorton:

=xlsortonvalues, order:

=xldescending

.add key

:=range(

"d1"

), sorton:

=xlsortonvalues, order:

=xldescending

endwith

with activesheet.sort

.setrange range(

"a1"

).currentregion

.header = xlyes

endwith

endsub

第3行**清除工作表所有的sortfields物件。

第4~7行分別在sort物件中新增sortfields物件。sortfields物件的add方法建立新的排序字段,並返回sortfields物件,其語法格式如下。

add(

key, sorton, order, customorder, dataoption)

該方法的各引數分別對應於range物件sort方法的引數。

第10行**指定sort物件的排序區域。

第11行**指定排序區域包含標題。

第12行**應用工作表排序。

資料結構 多關鍵字排序

一 實驗目的 了解多關鍵字的使用範圍 編寫程式實現多關鍵字的排序。二 實驗原理 依次根據某位進行排序,排好序後更新a i 最後得到的就是根據每位排好序的 a i lsdsort 函式 cnt陣列用來存放某位的個數,tmp陣列存放 a i 資料,根據 cnt 中的資料得到 tmp中存放哪乙個 a i ...

頁面多關鍵字搜尋

var userlist function 初始化方法 userlist.prototype.init function 在table繫結鏈結 datalist click function e 在table繫結鏈結 datalist click function e userlist.protot...

lintcode多關鍵字排序

給定 n 個學生的學號 從 1 到 n 編號 以及他們的考試成績,表示為 學號,考試成績 請將這些學生按考試成績降序排序,若考試成績相同,則按學號公升序排序。使用sort方法,先對item0排序,再對item1排序,優先順序越高的排序越後做 class solution param array th...