日常办公在使用 Excel 处理数据明细的时候常常需要上下调整各个数据行的顺序,一般的处理方式是直接剪切粘贴数据行来实现操作,数据量小,操作不太频繁的时候还可以,当数据量比较大,需要多次上下调整顺序的时候就有些麻烦了,以下代码可实现自动选取包含数据项目的数据区域并上下调整。
Option Explicit
Public numBeginRows, numBeginColumns, numEndRows, numEndColumns As Integer
Function UsedRangeParameter()
numBeginRows = ActiveSheet.UsedRange.Cells(1, 1).Row '获取当前已用表格区域的初始行位置
numBeginColumns = ActiveSheet.UsedRange.Cells(1, 1).Column '获取当前已用表格区域的初始列位置
numEndRows = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1 '获取当前已用表格区域的末尾行位置
numEndColumns = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1 '获取当前已用表格区域的末尾列位置
End Function
'向上移动
Sub qggUpTableRows()
On Error Resume Next
Dim i, j, numselectedRows As Integer
i = Selection.Row '获取当前选中单元格的行位置
j = Selection.Column '获取当前选中单元格的列位置
numselectedRows = Selection.Rows.Count '获取当前选中的行数
Call UsedRangeParameter
If i < numBeginRows Or i > numEndRows Or j < numBeginColumns Or j > numEndColumns Then
MsgBox "请选择数据区域!!!"
Exit Sub '目标区域不在已用表格区域内时跳出过程
End If
'选中的单元格区域向上移动
Range(Cells(i, numBeginColumns), Cells((numselectedRows - 1) + i, numEndColumns)).Select
Selection.Cut
Selection.Offset(-1, 0).Insert
Selection.Offset(-1, 0).Select
End Sub
'向下移动
Sub qggDownTableRows()
On Error Resume Next
Dim i, j, numselectedRows As Integer
i = Selection.Row '获取当前选中单元格的行位置
j = Selection.Column '获取当前选中单元格的列位置
numselectedRows = Selection.Rows.Count '获取当前选中的行数
Call UsedRangeParameter
If i < numBeginRows Or i > numEndRows Or j < numBeginColumns Or j > numEndColumns Then
MsgBox "请选择数据区域!!!"
Exit Sub '目标区域不在已用表格区域内时跳出过程
End If
'选中的单元格区域向下移动
Range(Cells(i, numBeginColumns), Cells(i + (numselectedRows - 1), numEndColumns)).Select
Selection.Cut
Selection.Offset(numselectedRows + 1, 0).Insert
Selection.Offset(1, 0).Select
End Sub
在打开的 Excel 文件中,进入 VBE 编辑器,新建标准模块,将以上代码直接复制粘贴即可。











