У меня есть несколько листов, в которых мне нужно переместить первую строку каждой ячейки на последнюю строку. Например, это одна ячейка:
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 |
+----------------------+
Ваше здоровье.