我有幾張紙,需要將每個單元格的第一行移動到最後一行。例如,這是一個單元格:
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 |
+----------------------+
乾杯。