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









