Odpowiedzi:
ShiftKlawisz przesuwa wiersz / kolumnę zamiast nadpisywania cel wiersz / kolumnę.
To wciąż metoda wycinania / wklejania, ale jest to najprostszy sposób, jaki mogę wymyślić.
Rozwiązanie z 4 kliknięciami: (np. Przenieś wiersz 8 powyżej rzędu 5)
Uwaga: Działa to również w przypadku przenoszenia wielu wierszy.
Dodaj następujące makra do osobistego skoroszytu makr i przypisz im klawisze skrótów. To zachowanie naśladuje Sublime Text's Swap Line Up i 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
Zajmując się podobnymi przypadkami w przeszłości, w których nie mogłem po prostu sortować według wiersza, znalazłem sposób na wygenerowanie kolumny z wynikiem formuły, na której mogłem posortować.
Znalazłem bardziej bezpośrednią odpowiedź na twoje pytanie z tej strony :
Microsoft Word ma funkcję, której brakuje w Excelu. Metoda Jona polega na przeniesieniu danych do Worda, użyciu polecenia Word, a następnie wklejeniu danych z powrotem do Excela. Wykonaj następujące kroki.
- Skopiuj odpowiedni fragment wierszy i kolumn z arkusza kalkulacyjnego. Najlepiej zanotować rozmiar zakresu, np. 118 wierszy x 5 kolumn
- Wklej dane do dokumentu Microsoft Word, gdzie automatycznie staje się tabelą i zachowuje całe twoje formatowanie.
W programie Word używaj mało znanej STRZAŁKI SHIFT-ALT-UP-STRZAŁKA i SHIFT-ALT-DOWN-STRZAŁKA, aby bardzo szybko przesuwać wiersze (lub wybrane ich fragmenty) w górę iw dół do woli. Wybierz jeden lub więcej wierszy. Możesz wybrać cały wiersz lub tylko jego część, jak pokazano tutaj.
Naciśnij kilka razy Shift + Alt + Strzałka w górę, aby szybko przesunąć rzędy w górę.
Po zsekwencjonowaniu wierszy według własnego uznania wklej je z powrotem do programu Excel, upewniając się, że nadpisałeś dokładnie ten sam rozmiar, który skopiowałeś.
Nieznaczna poprawa odpowiedzi @ wilson:
Kliknij numer wiersza prawym przyciskiem myszy (np. Wiersz 8), kliknij „t” Numer wiersza prawym przyciskiem myszy (np. Wiersz 5), naciśnij „e”
Mieszanie użycia myszy i klawiatury naprawdę dla mnie przyspiesza.
Oto sub, który działa również dla kolumn; łączy w sobie funkcjonalność we wszystkich czterech kierunkach:
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
To najłatwiejszy, jaki znalazłem. Naprawdę nie można przeciągać i upuszczać:
Na przykład, aby przenieść wiersz 3 przed wierszem 2: