Buscar y copiar datos de una hoja Excel a otra

Soy nuevo en este foro, pero es que llevo unos días intentando encontrar una solución para mi problema y no soy capaz de hacerlo. Mi problema es que necesito buscar varios datos de la hoja1 y copiarlos en la hoja2. Como la hoja1 no tiene siempre el mismo formato tengo que hacer una búsqueda por texto.

Los datos los inserto en la hoja1 del Excel así:

y necesito ordenarlos así en la hoja2, según los voy insertando datos en la hoja1.

1 Respuesta

Respuesta
1

Para automatizar un proceso lo primero que hay que tratar es de contar con un mínimo de reglas... sino buscar la posibilidad de diseñar un formato de entrada.

Deja algunos otros modelos de formato para tratar de encontrar un patrón y luego podría desarrollarte una macro para alimentar tu hoja2.

En principio siempre debiera encontrarse ciertos textos (con los 2 puntos en lo posible)

Orden:

Modelo:

Entonces podrías colocar esos textos en los títulos de tu hoja2 para que sea el campo de búsqueda.

(Y cuando menciono de incluir los 2 puntos es para evitar que se encuentre otro texto similar en el resto de la hoja. Imagino situaciones donde la falla diga: '... cambia el orden de proceso... o 'no es el modelo solicitado ...')

Aún así la dificultad que observo es que la información devuelta se encuentra en la fila siguiente al texto encontrado... salvo en Orden y me pregunto cómo serán los otros formatos...¿se repetirá esta regla?

Otra dificultad que veo es que en algunos casos no se toma la información completa como el orden y aquí también tendrás que imponerte alguna regla: o lo tomas completo o a partir de cierta posición como puede ser el primer guion o espacio.

Quedo a la espera de tus aclaraciones para continuar. Si te parece podés enviarme 3 o 4 muestras a mi correo para evaluar campos coincidentes. Mis correos aparecen en los encabezados de mi sitio.

En primer lugar, muchas gracias por tu ayuda y disposición.

Lo que hago es abrir archivos *.txt, con esta información e intento recopilarla toda en una tabla. Siempre se repite el mismo formato, pero no aparece la información colocada en la misma celda. Para mi la mayor dificultad esta en conseguir la fecha y la orden.

Saludos.

Gracias.

Aquí va la macro explicada como para que puedas avanzar con el resto de los campos. En el mail te detallo porqué utilicé este tipo de búsqueda y cómo seguir.

Sub actualizaInfo()
'ajustada x Elsamatilde
Dim busco
Dim ubica As Integer, ubica2 As Integer, i As Integer, z As Integer
Dim resulta As String
Dim maybook As Workbooks 'Definicion de variables
Dim ruta As String
Application.ScreenUpdating = False 'para no actualizar pantalla
mybook = ActiveWorkbook.Name 'Nombre del libro
ruta = ActiveWorkbook.Path  'ruta de la carpeta
ChDir ruta & "\"
mybookTxt = Dir("*.txt") 'todos los archivos de la ruta
While mybookTxt <> ""
Workbooks.OpenText mybookTxt, DataType:=xlDelimited, Tab:=True
'busco el caracter que se encuentra en Orden
With ActiveWorkbook.Sheets(1)
Set buscotxt = ActiveSheet.Range("A:A").Find("[", LookIn:=xlValues, lookat:=xlPart)
If Not buscotxt Is Nothing Then
    'extrae texto entre []
    ubica = InStr(1, .Cells(buscotxt.Row, 1), "[")
    If ubica > 0 Then
        'tomo el nro de orden
        ubica2 = InStr(ubica + 1, .Cells(buscotxt.Row, 1), "]")
        If ubica2 > 0 Then
            resulta = Mid(.Cells(buscotxt.Row, 1), ubica + 1, ubica2 - ubica - 1)
        Else
            resulta = Mid(.Cells(buscotxt.Row, 1), ubica + 1, Len(.Cells(buscotxt.Row, 1)) - ubica)
        End If
        'quito posibles espacios
        resulta = Trim(resulta)
        'coloco en col b de hoja activa
        Workbooks(mybook).Sheets(1).Range("B" & Workbooks(mybook).Sheets(1).Range("B" & Rows.Count).End(xlUp).Row).Offset(1, 0) = resulta
     End If
End If
'busco la fecha en filas superiores
z = buscotxt.Row - 1
For i = z To 1 Step -1
    'busco la coma
    ubica = InStr(1, .Cells(i, 1), ",")
    If ubica > 0 Then
        resulta = Mid(.Cells(i, 1), ubica + 1, Len(.Cells(i, 1)) - ubica)
        resulta = Trim(resulta)
        'coloco en col A de hoja activa
        Workbooks(mybook).Sheets(1).Range("A" & Workbooks(mybook).Sheets(1).Range("B" & Rows.Count).End(xlUp).Row) = CDate(resulta)
        Exit For
    End If
Next i
'seguir con otros campos
End With
'cierra el libro para seguir con el resto
ActiveWorkbook.Close False
mybookTxt = Dir()
Wend 'fin del While
Application.ScreenUpdating = False 'para no actualizar pantalla
End Sub

Sdos!

Una aclaración: definí la variable 'busco' cuando debiera ser 'buscotxt'

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas