Answers:
该Shift键可移动行/列,而不是覆盖目标行/列。
将以下宏添加到您的“个人宏工作簿”中,并为其分配快捷键。该行为模仿了Sublime Text的Swap Line Up和Swap Line Down。
Sub move_rows_down()
Dim rOriginalSelection As Range
Set rOriginalSelection = Selection.EntireRow
With rOriginalSelection
.Select
.Cut
.Offset(rOriginalSelection.rows.Count + 1, 0).Select
End With
Selection.Insert
rOriginalSelection.Select
End Sub
Sub move_rows_up()
Dim rOriginalSelection As Range
Set rOriginalSelection = Selection.EntireRow
With rOriginalSelection
.Select
.Cut
.Offset(-1, 0).Select
End With
Selection.Insert
rOriginalSelection.Select
End Sub
在处理过去不能仅按行排序的类似情况时,我找到了一种生成具有公式结果的列的方法,该结果可以排序。
我从此站点找到了对您问题的更直接答案:
Microsoft Word具有Excel所缺少的功能。Jon的方法包括将数据移至Word,使用Word命令,然后将数据粘贴回Excel。跟着这些步骤。
- 从表中复制相关的行和列块。最好注意范围的大小,例如118行x 5列
- 将数据粘贴到Microsoft Word文档中,该文档将自动成为表格并保留所有格式。
在Word中,使用鲜为人知的SHIFT-ALT-上箭头和SHIFT-ALT-下箭头可非常快地随意上下滑动行(或选定的行大块)。选择一个或多个行。您可以选择整个行,或仅选择行的一部分,如下所示。
多次按Shift + Alt + UpArrow,以快速将行向上滑动到位。
在对行进行了排序后,请将其粘贴回Excel中,确保覆盖了与复制的大小相同的块。
@wilson的答案略有改进:
右键单击行号(例如第8行),单击“ t”右键单击行号(例如,第5行),单击“ e”
鼠标和键盘的混合使用确实为我加快了速度。
这是一个同样适用于列的子项。它结合了所有四个方向的功能:
Sub MoveRowsOrColumns(direction As String)
Dim rOriginalSelection As Range
Select Case direction
Case "up", "down"
Set rOriginalSelection = Selection.EntireRow
Case "left", "right"
Set rOriginalSelection = Selection.EntireColumn
Case Else
Debug.Assert False
End Select
With rOriginalSelection
.Select
.Cut
Select Case direction
Case "up"
.Offset(-1, 0).Select
Case "down"
.Offset(rOriginalSelection.Rows.Count + 1, 0).Select
Case "left"
.Offset(0, -1).Select
Case "right"
.Offset(0, rOriginalSelection.Columns.Count + 1).Select
End Select
End With
Selection.Insert
rOriginalSelection.Select
End Sub