Tenho algumas planilhas que preciso para mover a primeira linha de cada célula para a última linha. Por exemplo, esta é uma célula:
Chris / Mike / Ralph
Henry / Steve
Mark / Bob
Se tornaria
Henry / Steve
Mark / Bob
Chris / Mike / Ralph
Eu estava pensando em usar regex, mas não vejo nenhuma maneira fácil de lidar com isso. Copiar e colar as células em um editor de texto e depois copiá-las de volta resulta na colagem incorreta, pois muitas células são mescladas. Talvez exista um código/fórmula para fazer isso, mas não tenho certeza de como fazê-lo.
Qualquer idéia será útil!
Responder1
Consegui fazer um script VBA simples para fazer isso:
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
Responder2
o que você pode fazer é adicionar uma coluna auxiliar e excluí-la:
+----------------------+
| NAMES |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
Para isso
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
Em seguida, ordene por coluna AUX
e pronto. Usei a =count()
fórmula para que você possa ter a primeira linha como o número máximo n
, depois as outras linhas começam de 1 a n-1
. Em seguida, exclua a coluna.
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
E então
+----------------------+
| NAMES |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
Saúde.