亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
622
2025-03-31
按照指定工作表中的數據順序對另一工作表中的數據排序
我從數據庫中導入數據到工作表,本來數據庫中的數據順序是排好了的,然而導入工作表中后數據順序變亂了。如果在工作表中使用復制粘貼來重新恢復固定的順序,將會花費大量的時間,能否使用VBA快速完成排序,詳情如下。
下圖1中“固定順序”工作表為數據本來應該的順序:
圖1
圖2中“整理前”工作表為導入數據后的順序:
圖2
可以看出,“整理前”工作表中的列順序被打亂了,我們需要根據“固定順序”工作表中列的順序將“整理前”工作表恢復排序。
實現上述目的的代碼如下:
Sub OrderRange()
Dim wksYesOrder AsWorksheet
Dim wksNoOrder AsWorksheet
Dim wksNew As Worksheet
Dim lngLastFixed As Long
Dim lngLastVariable As Long
Dim lngNewCol As Long
Dim i As Long
Dim SearchHeader, rng
‘賦值工作表對象
Set wksYesOrder =Worksheets(“固定順序”)
Set wksNoOrder =Worksheets(“整理前”)
Worksheets.Add Before:=wksNoOrder
ActiveSheet.Name = “整理后”
Set wksNew =Worksheets(“整理后”)
‘獲取數據區域所在的最后一列
lngLastFixed =wksYesOrder.Range(“IV1”).End(xlToLeft).Column
lngLastVariable =wksNoOrder.Range(“IV1”).End(xlToLeft).Column
‘列計數變量
lngNewCol = 1
‘遍歷”固定順序”工作表列標題
For i = 1 To lngLastFixed
SearchHeader =wksYesOrder.Cells(1, i)
‘在”整理前”工作表中查找
With wksNoOrder
Set rng =.Range(.Cells(1, 1), .Cells(1, lngLastVariable)) _
.Find(SearchHeader, LookIn:=xlValues, LookAt:=xlWhole)
‘如果找到則將該列復制到”整理后”工作表
If (Not rng Is Nothing) Then
.Cells(1,rng.Column).EntireColumn.Copy _
wksNew.Cells(1, lngNewCol)
lngNewCol =lngNewCol + 1
End If
End With
Next i
End Sub
上述代碼的圖片版如下:
運行代碼后的結果如下圖3所示:
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。