Cadenas en Excel. Extraer datos.

Trabajo con datos deportivos, en concreto resultados de competiciones de atletismo, y obviamente trato automatizar el proceso para meterlos en una base de datos (cuando es posible). Tengo más o menos claras las herramientas para extraer texto en Excel y Access: Left, Right, Mid, etc. Pero la cosa ya se me complica cuando se trata de una cadena más o menos compleja. Voy a poner un ejemplo:

Puesto Dorsal Atleta A.Nac. Club Federacion Licencia Tiempo

37 123 MARIN MARTIN, EDUARDO 1974 CD ALiMCO-RUNNING FIZ ARABA VI 5707 38:09

38 54 CASTILLO RUIZ, IGOR 1975 CA LAUDIO ARABA VI 3334 38:16

39 174 vahl pedrosa, guillermo 1989 sopelanako munarri at gipuzkoa euss 51920 38:19

Lo que trata es de enviar cada dato a uno de los campos que pongo arriba.

Agradecería cualquier ayuda al respecto (también algún enlace a un tutorial o publicación donde se explique esos casos.

1 respuesta

Respuesta
2

Si tienes tu información de esta forma:

Y la quieres de esta forma:

Utiliza la siguiente macro:

Sub Separar_Cadena()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Rows("2:" & Rows.Count).Clear
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        datos = Split(h1.Cells(i, "A"), " ")
        k = 1
        h2.Cells(i, "A") = datos(0)
        h2.Cells(i, "B") = datos(1)
        nombre = ""
        m = 0
        For j = 2 To UBound(datos)
            If IsNumeric(LTrim(datos(j))) Then
                año = LTrim(datos(j))
                m = j
                Exit For
            End If
            nombre = nombre & datos(j) & " "
        Next
        h2.Cells(i, "C") = nombre
        h2.Cells(i, "D") = año
        club = ""
        For n = m + 1 To UBound(datos) - 3
            club = club & datos(n) & " "
        Next
        h2.Cells(i, "E") = club
        h2.Cells(i, "F") = datos(UBound(datos) - 2)
        h2.Cells(i, "G") = datos(UBound(datos) - 1)
        h2.Cells(i, "H") = datos(UBound(datos))
    Next
    MsgBox "Fin"
End Sub

Existen dos detalles en la macro que no logro identificar que son los datos de "Club" y "Federación", ya que en tus ejemplos no puedo identificar algún dato distintivo para saber cuáles palabras son para "Club" y cuáles son para "Federación". Te puse las primeras palabras para Club y la última palabra para "Federación". Si existe alguna característica en particular que identifique los datos, me la dices y la adapto a la macro, si no existe, entonces tendrás que separar esos datos de manera manual, pero ya es menos trabajo.


Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Separar_Cadena
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Feliz Año 2018

.

Un dato más. Crea una hoja y le pones por nombre "Hoja2", en la "Hoja1" pones tus datos, en la "Hoja2" quedarán los resultados.

Muchísimas gracias Dante!

Realmente no me había planteado hacerlo con código, lo que supera mis conocimientos, especialmente en Excel. Voy a estudiármelo detenidamente y te volveré a preguntar si tengo alguna duda.

Saludos.

Carlos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas