Excel 中的自定義排序是一項非常有用的功能。 在本文中,我們將討論如何使用 Excel VBA 自動更新範圍內的自定義排序。
當您使用自定義排序時,您會發現這是 Excel 中一個了不起的功能。 但是,如果您經常使用此功能,您也可能會發現問題。 您將在一定範圍內對某些數據和信息進行排序。 當您將其他數據和信息添加到範圍中時,範圍中的順序不會自動更改。 下圖顯示了這種情況的示例。
當您將新數據集添加到範圍中時,它不會自動更改排名。 如果您仍想按照相同的標準對這個更大範圍的新數據集進行排序,則需要再次執行自定義排序過程。 可以看到這樣做很麻煩,尤其是需要不斷更新工作表中的數據和信息的時候。 每次向范圍中添加新信息時,都需要重新排序。 為了解決這個問題并快速完成您的任務,您可以繼續閱讀本文。
記錄宏
當自定義排序的條件非常複雜時,你會發現很難直接寫VBA代碼。 因此,現在您可以先錄製一個宏。 並且該宏中的代碼可以在其他宏中使用。 記錄代碼的過程非常簡單。
- 在錄製宏之前,您需要在功能區中添加 VBA 選項卡。 在這裡右鍵單擊功能區中的任何選項卡。
- 然後在菜單中選擇“自定義功能區”。
- 現在在“Excel選項”窗口中,選中“主選項卡”列表中的“開發人員”選項。
- 之後,在窗口中單擊“確定”。 因此,您已在功能區中添加了選項卡。
- 現在您將回到工作表。 單擊您添加的選項卡“開發人員”。
- 然後單擊工具欄中的“錄製宏”按鈕。 這樣,就會彈出“錄製宏”窗口。
另一方面,你也可以點擊工作表底部的小按鈕來代替上面的6個步驟。
- 現在在“錄製宏”窗口中,將名稱輸入到第一個文本框中。 如果需要,分配一個快捷鍵。 然後根據需要添加描述。
- 接下來點擊“確定”。 因此,宏開始記錄您所做的每個操作。
- 在工作表中選擇您需要排序的範圍。
- 單擊選項卡“主頁”。
- 然後單擊功能區中的“排序和篩選”按鈕。
- 在下拉列表中,選擇“自定義排序”選項。
- 在“排序”窗口中,根據需要設置排序條件。 所有的動作都將記錄在宏中。
錄製宏時,不要進行額外的步驟。 否則這些步驟也將被記錄下來。 而這會給後面的部分帶來麻煩。
- 在“排序”窗口中完成設置後,單擊“確定”保存設置。
- 現在再次單擊功能區中的“開發人員”選項卡。
- 然後單擊“停止錄製”按鈕。 當工作表處於錄製宏的狀態時,按鈕會變為“停止錄製”。
您也可以單擊工作表底部的按鈕停止錄製宏。 這樣,您就完成了錄製。 所有排序標準都已保存在宏 1 中。
使用 Excel VBA 宏
在這一部分中,我們將向您展示如何使用 VBA 宏來更新工作表中的自定義排序。 您還將在這部分中使用錄製的宏。
- 單擊功能區中的“開發人員”選項卡。
- 然後單擊工具欄中的“Visual Basic”按鈕。 相反,您也可以按鍵盤上的“Alt +F11”按鈕來替換這 2 個步驟。
- 在 Visual Basic 編輯器中,雙擊“VBAProject”區域中的工作表。 在此工作表中,您需要更新自定義排序。 而在您的實際文件中,您需要雙擊相應的工作表。
- 現在將以下代碼輸入該區域。
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
- 然後在上面兩個VBA語句之間輸入如下代碼。
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:C13")) Is Nothing Then
End If
這裡估計範圍。 銷售量將有 12 個月,我們在標題的第一行輸入範圍“A1:C13”。 您也可以根據您的實際工作表將範圍輸入到代碼中。
- 這一步,在編輯器中打開模塊1。 本模塊中的代碼是您之前製作的自定義排序的過程。 你可以看到使用錄製宏的功能可以節省你很多時間。
- 現在復制此模塊中的主要部分。
- 然後雙擊“VBAProject”部分中的目標工作表。
- 之後,將代碼粘貼到 IF-END IF 代碼中。
- 然後根據需要修改代碼中的範圍。 錄製的宏有點複雜和多餘。 您也可以根據需要進行修改。 因此,完整的 VBA 代碼將是這樣的:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:C13")) Is Nothing Then
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("B2:B13"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("C2:C13"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End With
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:C13")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End Sub
我們在代碼中添加另一個 WITH-END WITH。 因此,它會比記錄結果更清楚。 如果您有其他要求,也可以根據您的實際需要進行修改。 修改代碼時需要小心。 否則你會在工作表中產生一些錯誤的結果。
- 現在您已經在編輯器中完成了 VBA 代碼。 您可以返回工作表並測試結果。 當您將下個月和相應的數字添加到範圍內時,自定義排序將自動刷新。
因此,您無需每次在目標範圍內輸入新元素時都手動更新自訂排序。但另一方面,您需要將此工作簿儲存為啟用巨集的 Excel 檔案。否則,如果儲存為普通文件,程式碼將會遺失。
我們將為 Excel 腐敗受害者提供援助
我們都知道 Excel 的功能非常強大,它可以幫助您快速輕鬆地完成工作。 但 Excel 應用程序還遠非完美。 有時 Excel 會由於許多不同的原因而損壞。 一旦 Excel 損壞,您將無法通過此應用程序完成您的任務。 為了更好地工作,您將需要盡快修復它。
我們公司多年來一直致力於恢復領域,尤其是Excel恢復。 因此,您可以向我們的技術人員尋求幫助。 憑藉多年的經驗,我們可以輕鬆找出導致文件損壞的原因。 並更好地幫助你 修復Excel xlsx文件損壞,我們開發了第三方工具。 這個工具很容易操作,你不需要擔心隱私問題。
作者簡介:
Anna Ma是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 Word docx 錯誤 和Outlook修復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM









