Macro separar datos de una columna

Es un gusto saludarlos nuevamente!

Tengo una columna (columna "A") con diferentes datos, necesito que a través de una macro separe desde el último
guión en otras 2 columnas; en columna "B" el valor antes del último guión, y en columna "C", el valor
después del último guión.
Por ejemplo:

Lo puedo hacer a través de fórmulas como EXTRAE, pero si me ayudan con esta macro es mucho más ágil.

1 respuesta

Respuesta
2

Según tu ejemplo siempre son 2 dígitos, así que esta macro te servirá.

Entrá al Editor de macros presionando juntas las teclas Alt y F11

Insertá un módulo y allí copiá esto:

Sub separaXguion()
'x Elsamatilde
'recorre la col A, desde fila 2 hasta encontrar una celda vacía
Range("A2").Select
While ActiveCell <> ""
    ActiveCell.Offset(0, 1) = Left(ActiveCell, Len(ActiveCell) - 3)
    ActiveCell.Offset(0, 2) = Right(ActiveCell, 2)
    ActiveCell.Offset(1, 0).Select
Wend
End Sub

Si esto resuelve tu consulta no olvides valorarla. Si tus datos no siempre tienen este formato debes dejar ejemplos de las posibles variantes que pueden presentarse.

Hola Elsa! antes que todo muchas gracias por tu ayuda y por responder mis preguntas.

Efectivamente existe el caso de que después del último guión existan más de 2 dígitos, agrego un ejemplo:

Por favor tu ayuda!!

Slds.

Si tienen la opción de dejar una imagen para que podamos ver vuestros datos y desarrollar de acuerdo a ellos... ¿por qué no dejar una imagen con todas las opciones? Que no somos expertos en adivinanzas ! !

Aquí dejo la macro ajustada a la 'nueva situación':

Sub separaXguion()
'x Elsamatilde
'recorre la col A, desde fila 2 hasta encontrar una celda vacía
Range("A2").Select
While ActiveCell <> ""
'ubico el guión recorriendo a izquierda
For i = Len(ActiveCell) To 1 Step -1
If Mid(ActiveCell, i, 1) = "-" Then
    ubico = i
    Exit For
End If
Next i
If ubico > 1 Then
    ActiveCell.Offset(0, 1) = Left(ActiveCell, ubico - 1)
    ActiveCell.Offset(0, 2) = Right(ActiveCell, Len(ActiveCell) - ubico)
End If
ActiveCell.Offset(1, 0).Select
Wend
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas