Excel – Gibt es eine clevere Möglichkeit, die erste Zeile jeder Zelle in die letzte Zeile zu verschieben?

Excel – Gibt es eine clevere Möglichkeit, die erste Zeile jeder Zelle in die letzte Zeile zu verschieben?

Ich habe ein paar Blätter, bei denen ich die erste Zeile jeder Zelle in die letzte Zeile verschieben muss. Dies ist beispielsweise eine Zelle:

Chris / Mike / Ralph
Henry / Steve
Mark / Bob

Würde werden

Henry / Steve
Mark / Bob
Chris / Mike / Ralph

Ich dachte daran, reguläre Ausdrücke zu verwenden, aber ich sehe keine einfache Möglichkeit, damit umzugehen. Wenn man die Zellen in einen Texteditor kopiert und dann wieder zurückkopiert, ist der eingefügte Text falsch, da viele Zellen zusammengeführt werden. Vielleicht gibt es einen Code/eine Formel dafür, aber ich bin mir nicht sicher, wie das geht.

Alle Ideen wären hilfreich!

Antwort1

Ich konnte hierfür ein einfaches VBA-Skript erstellen:

Sub swap()
    Dim cel As Range
    Dim selectedRange As Range

    Set selectedRange = Application.Selection

    For Each cel In selectedRange.Cells
       Dim lines() As String
       Dim firstLine As String

       lines = Split(cel.Value, vbLf)
       If UBound(lines) > 0 Then
        firstLine = lines(0)
        lines(0) = lines(UBound(lines))
        lines(UBound(lines)) = firstLine
        cel.Value = Join(lines, vbLf)
        End If
    Next cel
End Sub

Antwort2

Sie können eine Hilfsspalte hinzufügen und sie dann löschen:

+----------------------+
|         NAMES        |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
| Henry / Steve        |
+----------------------+
| Mark / Bob           |
+----------------------+

Zu diesem

+----------------------+------------------+
|         NAMES        |     AUX          |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |    
+----------------------+------------------+
| Henry / Steve        |     1            |
+----------------------+------------------+
| Mark / Bob           |     2            |
+----------------------+------------------+

Dann nach Spalte sortieren AUXund fertig. Ich habe die =count()Formel so verwendet, dass Sie die erste Zeile als maximale Zahl haben können n, dann beginnen die anderen Zeilen von 1 bis n-1. Dann löschen Sie die Spalte.

+----------------------+------------------+
|         NAMES        |     AUX          |
+----------------------+------------------+
| Henry / Steve        |     1            |
+----------------------+------------------+
| Mark / Bob           |     2            |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+

Und dann

+----------------------+
|         NAMES        |  
+----------------------+
| Henry / Steve        |  
+----------------------+
| Mark / Bob           | 
+----------------------+
| Chris / Mike / Ralph |
+----------------------+

Prost.

verwandte Informationen