Excel — есть ли какой-нибудь умный способ взять первую строку в каждой ячейке и переместить ее в последнюю строку?

Excel — есть ли какой-нибудь умный способ взять первую строку в каждой ячейке и переместить ее в последнюю строку?

У меня есть несколько листов, в которых мне нужно переместить первую строку каждой ячейки на последнюю строку. Например, это одна ячейка:

Chris / Mike / Ralph
Henry / Steve
Mark / Bob

Станет

Henry / Steve
Mark / Bob
Chris / Mike / Ralph

Я думал использовать regex, но не вижу простого способа справиться с этим. Копирование и вставка ячеек в текстовый редактор, а затем копирование их обратно приводит к тому, что вставка оказывается неправильной, так как многие ячейки объединяются. Возможно, есть код/формула для этого, но я не уверен, как это сделать.

Любые идеи будут полезны!

решение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 |
+----------------------+

Ваше здоровье.

Связанный контент