【Excel VBA】工作表按月份排序

VBA工作表按月份排序

Excel工作表沒有按照月份順序排列,難道只能手動拖曳嗎?以下帶你使用VBA將工作表按月份排序

輸入巨集

※輸入以下指令※

Sub 工作表按月份排序()
Dim i As Integer, j As Integer
For i = 1 To Worksheets.Count – 1
For j = i + 1 To Worksheets.Count
If CInt(Replace(Worksheets(i).Name, “月”, “”)) > CInt(Replace(Worksheets(j).Name, “月”, “”)) Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i
End Sub

執行巨集

點選「開發人員」-「巨集」或按下「Ctrl」+「F8」快捷鍵,並「執行」巨集。

執行後則將工作表按月份排序,如以下工作表1~12月按順序排列

語法說明

Dim i As Integer, j As Integer
‘宣告變數「i」與「j」型態為「整數」。
For i = 1 To Worksheets.Count – 1
‘使用For迴圈, i 從 1 到(工作表總數 – 1)
For j = i + 1 To Worksheets.Count
‘使用For迴圈, j 從( i + 1 )到(工作表總數 – 1)
Replace(Worksheets(i).Name, “月”, “”)
‘將月變為空值,如12月→12,後續才可按照數字大小排列而不是以字串
CInt(Replace(Worksheets(i).Name, “月”, “”))
‘將1~12月變成1~12,再將其轉為「整數」資料型態,才能以整數按大小排列。
If CInt(Replace(Worksheets(i).Name, “月”, “”)) > CInt(Replace(Worksheets(j).Name, “月”, “”))
‘當轉為「整數」資料型態後,若第 i 張工作表比第 j 張工作表大的話,則執行以下
Worksheets(j).Move Before:=Worksheets(i)
‘將第 j 張工作表移動至第 i 張工作表前面
‘綜合以上則是先從第一張工作表與第二工作表比順序,順序前者排至第一張,再與後面工作表比順序,持續比較則可完成排序。

其他文章分享

【Excel VBA】
刪除工作表

【Excel VBA】
快速排序工作表

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *