Categories: Excel

Excel VBA Range.Sort 範圍排序教學與範例

介紹如何在 Excel VBA 中針對指定範圍,依據指定的欄位與條件進行資料的排序。

假設我們的原始資料如下:

原始資料

基本排序

若單純只是要依據姓名(或其他單一欄位)來排序,只要指定資料範圍,並以 Key1 指定排序依據的欄位,即可進行資料的排序:

' 排序 A1:D10 範圍的資料
' Key1:=Range("A1")    依據 A 欄排序
' Order1:=xlAscending  升冪排序
' Header:=xlYes        有標題列
Range("A1:D10").sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

若要更改排序方式,則可由 Order1 參數調整,可用的值有 xlAscending(升冪排序)與 xlDescending(降冪排序)。若表格不包含標題列,可將 Header 參數改為 xlNo

如果想要對整欄的所有資料進行排序,可以使用 Columns 指定要納入排序的欄位:

' 排序 A 欄至 D 欄的所有資料
' Key1:=Range("A1")    依據 A 欄排序
' Order1:=xlAscending  升冪排序
' Header:=xlYes        有標題列
Columns("A:D").sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

排序過後的表格會像這樣。

依據姓名欄排序

依據日期排序

若要根據日期排序,只要將 Key1 指定為日期那一欄即可:

' 排序 A 欄至 D 欄的資料
' Key1:=Range("C1")     依據 C 欄排序
' Order1:=xlDescending  降冪排序
' Header:=xlYes         有標題列
Columns("A:D").sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlYes

根據日期降冪排序過後的表格會像這樣。

根據日期降冪排序

依據多欄位排序

若要根據多個欄位來排序,只要透過 Key1Key2Key3 這些參數來依序指定排序的依據欄位即可,同時搭配 Order1Order2Order3 指定排序的方式。

舉例來說,如果想先依據組別升冪排序,同組別之內再依據金額降冪排序,可以這樣寫:

' 排序 A 欄至 D 欄的資料
' Key1:=Range("B1")     依據 B 欄排序
' Order1:=xlAscending   升冪排序
' Key2:=Range("D1")     依據 D 欄排序
' Order2:=xlDescending  降冪排序
' Header:=xlYes         有標題列
Columns("A:D").sort Key1:=Range("B1"), Order1:=xlAscending, _
  Key2:=Range("D1"), Order2:=xlDescending, Header:=xlYes

排序過後的表格會像這樣。

依據多欄位排序
Share
Published by
Office Guide
Tags: VBA

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago