各セルの最初の行を最後の行に移動する必要があるシートがいくつかあります。たとえば、次のセルがあります:
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 |
+----------------------+
乾杯。