日常办公在使用 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 编辑器,新建标准模块,将以上代码直接复制粘贴即可。
评论 (1)
这个文章必须顶。。