如何在 Excel 工作表中通過 VBA 自動更新排序範圍

立即分享:

Excel 中的自定義排序是一項非常有用的功能。 在本文中,我們將討論如何使用 Excel VBA 自動更新範圍內的自定義排序。

當您使用自定義排序時,您會發現這是 Excel 中一個了不起的功能。 但是,如果您經常使用此功能,您也可能會發現問題。 您將在一定範圍內對某些數據和信息進行排序。 當您將其他數據和信息添加到範圍中時,範圍中的順序不會自動更改。 下圖顯示了這種情況的示例。例

當您將新數據集添加到範圍中時,它不會自動更改排名。 如果您仍想按照相同的標準對這個更大範圍的新數據集進行排序,則需要再次執行自定義排序過程。 可以看到這樣做很麻煩,尤其是需要不斷更新工作表中的數據和信息的時候。 每次向范圍中添加新信息時,都需要重新排序。 為了解決這個問題并快速完成您的任務,您可以繼續閱讀本文。

記錄宏

當自定義排序的條件非常複雜時,你會發現很難直接寫VBA代碼。 因此,現在您可以先錄製一個宏。 並且該宏中的代碼可以在其他宏中使用。 記錄代碼的過程非常簡單。

  1. 在錄製宏之前,您需要在功能區中添加 VBA 選項卡。 在這裡右鍵單擊功能區中的任何選項卡。
  2. 然後在菜單中選擇“自定義功能區”。自定義功能區
  3. 現在在“Excel選項”窗口中,選中“主選項卡”列表中的“開發人員”選項。開發者
  4. 之後,在窗口中單擊“確定”。 因此,您已在功能區中添加了選項卡。
  5. 現在您將回到工作表。 單擊您添加的選項卡“開發人員”。
  6. 然後單擊工具欄中的“錄製宏”按鈕。 這樣,就會彈出“錄製宏”窗口。記錄宏

另一方面,你也可以點擊工作表底部的小按鈕來代替上面的6個步驟。記錄宏

  1. 現在在“錄製宏”窗口中,將名稱輸入到第一個文本框中。 如果需要,分配一個快捷鍵。 然後根據需要添加描述。設置宏
  2. 接下來點擊“確定”。 因此,宏開始記錄您所做的每個操作。
  3. 在工作表中選擇您需要排序的範圍。
  4. 單擊選項卡“主頁”。
  5. 然後單擊功能區中的“排序和篩選”按鈕。
  6. 在下拉列表中,選擇“自定義排序”選項。自定義排序
  7. 在“排序”窗口中,根據需要設置排序條件。 所有的動作都將記錄在宏中。分類

錄製宏時,不要進行額外的步驟。 否則這些步驟也將被記錄下來。 而這會給後面的部分帶來麻煩。

  1. 在“排序”窗口中完成設置後,單擊“確定”保存設置。
  2. 現在再次單擊功能區中的“開發人員”選項卡。
  3. 然後單擊“停止錄製”按鈕。 當工作表處於錄製宏的狀態時,按鈕會變為“停止錄製”。停止錄製

您也可以單擊工作表底部的按鈕停止錄製宏。 這樣,您就完成了錄製。 所有排序標準都已保存在宏 1 中。

使用 Excel VBA 宏

在這一部分中,我們將向您展示如何使用 VBA 宏來更新工作表中的自定義排序。 您還將在這部分中使用錄製的宏。

  1. 單擊功能區中的“開發人員”選項卡。
  2. 然後單擊工具欄中的“Visual Basic”按鈕。 相反,您也可以按鍵盤上的“Alt +F11”按鈕來替換這 2 個步驟。Visual Basic中
  3. 在 Visual Basic 編輯器中,雙擊“VBAProject”區域中的工作表。 在此工作表中,您需要更新自定義排序。 而在您的實際文件中,您需要雙擊相應的工作表。
  4. 現在將以下代碼輸入該區域。
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
  1. 然後在上面兩個VBA語句之間輸入如下代碼。
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:C13")) Is Nothing Then

End If

這裡估計範圍。 銷售量將有 12 個月,我們在標題的第一行輸入範圍“A1:C13”。 您也可以根據您的實際工作表將範圍輸入到代碼中。

  1. 這一步,在編輯器中打開模塊1。 本模塊中的代碼是您之前製作的自定義排序的過程。 你可以看到使用錄製宏的功能可以節省你很多時間。
  2. 現在復制此模塊中的主要部分。複製
  3. 然後雙擊“VBAProject”部分中的目標工作表。
  4. 之後,將代碼粘貼到 IF-END IF 代碼中。
  5. 然後根據需要修改代碼中的範圍。 錄製的宏有點複雜和多餘。 您也可以根據需要進行修改。 因此,完整的 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。 因此,它會比記錄結果更清楚。 如果您有其他要求,也可以根據您的實際需要進行修改。 修改代碼時需要小心。 否則你會在工作表中產生一些錯誤的結果。

  1. 現在您已經在編輯器中完成了 VBA 代碼。 您可以返回工作表並測試結果。 當您將下個月和相應的數字添加到範圍內時,自定義排序將自動刷新。測試

因此,您無需每次在目標範圍內輸入新元素時都手動更新自訂排序。但另一方面,您需要將此工作簿儲存為啟用巨集的 Excel 檔案。否則,如果儲存為普通文件,程式碼將會遺失。

我們將為 Excel 腐敗受害者提供援助

我們都知道 Excel 的功能非常強大,它可以幫助您快速輕鬆地完成工作。 但 Excel 應用程序還遠非完美。 有時 Excel 會由於許多不同的原因而損壞。 一旦 Excel 損壞,您將無法通過此應用程序完成您的任務。 為了更好地工作,您將需要盡快修復它。

我們公司多年來一直致力於恢復領域,尤其是Excel恢復。 因此,您可以向我們的技術人員尋求幫助。 憑藉多年的經驗,我們可以輕鬆找出導致文件損壞的原因。 並更好地幫助你 修復Excel xlsx文件損壞,我們開發了第三方工具。 這個工具很容易操作,你不需要擔心隱私問題。

作者簡介:

Anna Ma是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 Word docx 錯誤 和Outlook修復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。