Macro Separar datos de una columna

En la columna A tengo los siguientes datos:

Observación: B y C son los resultados que debe producir la macro en la misma hoja:

          A                             B                  C

100000/2016              100000            2016

ABS1/2015                       1                 2015

x55/15                               55               2015

yyyyyyy1000-2016     1000               2016

zzzzz4_16                         4                 2016

Los últimos dígitos de A, realmente es el año y debe traducirse en 4 dígitos en la columna C

1 Respuesta

Respuesta
2

H o l a:

Te anexo la macro, puse algunas validaciones para verificar el contenido de las celdas. Prueba y me comentas.

Sub SepararDatos()
'Por.Dante Amor
    Columns("B:C").ClearContents
    seps = Array("/", "-", "_")
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        existenum = False
        For j = 1 To Len(Cells(i, "A"))
            wcar = Mid(Cells(i, "A"), j, 1)
            If IsNumeric(Mid(Cells(i, "A"), j, 1)) Then
                nums = Mid(Cells(i, "A"), j)
                existe = False
                For k = LBound(seps) To UBound(seps)
                    resultados = Split(nums, seps(k))
                    x = UBound(resultados)
                    If x > 0 Then
                        existe = True
                        Exit For
                    End If
                Next
                If existe Then
                    Cells(i, "B") = resultados(0)
                    Select Case Len(resultados(1))
                        Case 4
                            Cells(i, "C") = resultados(1)
                        Case 2
                            Cells(i, "C") = "20" & resultados(1)
                        Case Else
                            Cells(i, "C") = resultados(1) & " No es un año"
                    End Select
                Else
                    Cells(i, "B") = resultados(0)
                    Cells(i, "C") = "No tiene separador de año"
                End If
                existenum = True
                Exit For
            End If
        Next
        If existenum = False Then
            Cells(i, "B") = "No hay números"
        End If
    Next
    MsgBox "Fin"
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas