Ответы:
ShiftКлюч сдвигается на строку / столбец вместо перезаписи целевой строки / столбца.
Это все еще метод вырезания / вставки, но это самый простой способ, который я могу себе представить.
Решение в 4 клика: (например, переместите строку 8 над строкой 5)
Примечание: это также работает для перемещения нескольких строк.
Добавьте следующие макросы в личную книгу макросов и назначьте им сочетания клавиш. Поведение имитирует Swap Line Up 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. Метод Джона включает перемещение данных в Word, использование команды Word и затем вставку данных обратно в Excel. Следуй этим шагам.
- Скопируйте соответствующий кусок строк и столбцов из вашей таблицы. Лучше всего отметить размер диапазона, например, 118 строк x 5 столбцов
- Вставьте данные в документ Microsoft Word, где они автоматически становятся таблицей и сохраняют все ваше форматирование.
В Word используйте малоизвестные клавиши SHIFT-ALT-UP-ARROW и SHIFT-ALT-DOWN-ARROW, чтобы очень быстро перемещать строки (или выбранные фрагменты строк) вверх и вниз по желанию. Выберите одну или несколько строк. Вы можете выбрать всю строку или только часть строки, как показано здесь.
Нажмите 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
Это самый простой, который я нашел. Не могу на самом деле перетаскивать:
Например, чтобы переместить строку 3 перед строкой 2: