Excel - 有什麼聰明的方法可以取得每個儲存格中的第一行並將其移至最後一行嗎?

Excel - 有什麼聰明的方法可以取得每個儲存格中的第一行並將其移至最後一行嗎?

我有幾張紙,需要將每個單元格的第一行移動到最後一行。例如,這是一個單元格:

Chris / Mike / Ralph
Henry / Steve
Mark / Bob

會成為

Henry / Steve
Mark / Bob
Chris / Mike / Ralph

我正在考慮使用正規表示式,但我沒有看到任何簡單的方法來處理這個問題。將儲存格複製並貼上到文字編輯器,然後將它們複製回來會導致貼上錯誤,因為許多儲存格被合併。也許有一個代碼/公式可以做到這一點,但我不確定如何做到這一點。

任何想法都會有幫助!

答案1

我可以編寫一個簡單的 VBA 腳本來執行此操作:

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

答案2

您可以做的是新增輔助列並將其刪除:

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

對此

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

然後按列排序AUX就完成了。我使用了該=count()公式,因此您可以將第一行作為最大數字n,然後其他行從 1 開始到n-1。然後刪除該列。

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

進而

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

乾杯。

相關內容