Tengo algunas hojas que necesito para mover la primera línea de cada celda a la última línea. Por ejemplo esta es una celda:
Chris / Mike / Ralph
Henry / Steve
Mark / Bob
Se convertiría
Henry / Steve
Mark / Bob
Chris / Mike / Ralph
Estaba pensando en usar expresiones regulares pero no veo ninguna manera fácil de solucionar esto. Copiar y pegar las celdas en un editor de texto y luego volver a copiarlas da como resultado que el pegado sea incorrecto ya que muchas celdas están fusionadas. Tal vez haya un código/fórmula para hacer esto, pero no estoy seguro de cómo hacerlo.
¡Cualquier idea será de gran ayuda!
Respuesta1
Pude hacer un script VBA simple para hacer esto:
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
Respuesta2
lo que puedes hacer es agregar una columna auxiliar y eliminarla:
+----------------------+
| NAMES |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
A esto
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
Luego ordena por columna AUX
y listo. Utilicé la =count()
fórmula para que puedas tener la primera línea como el número máximo n
, luego las otras líneas comienzan del 1 al n-1
. Luego elimine la columna.
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
Y luego
+----------------------+
| NAMES |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
Salud.