Macro de búsqueda y posición

Tengo un archivo plano que me envían y lo coloco en una hoja 1 (nombre, referencia, valor, concepto, etc) . Para hacer validación de los datos si están completos se requiere una macro de validación esta se hará en la hoja 2. La idea de la macro es que en esta hoja2 este vacía solo con los títulos de la hoja1. Como se debe conservar el mismo orden que la primera se debe buscar un valor determinado. Ejemplo la referencia y esta debe de llevarte a la posición que se encuentra el dato en la hoja1 y traerme el resto de la información que posea. Es decir si busco la referencia en algún punto en la hoja2 esta la busca y la encuentra en la celda A24 de la hoja1 y la macro me lleve a la celda a24 de la hoja2 y me traiga los datos de lo que hay en la celda B24, C24, D24.

2 Respuestas

Respuesta
1
Aclarame este detalle:
'.....se debe buscar un valor determinado. elemplo la referencia
¿Cómo harás el ingreso del valor a buscar? Estará en una celda, lo pedirás con un InputBox...
Quedo a la espera de tus aclaraciones.
De antemano muchas gracias por la pronta respuesta a mi solicitud y la disposición que se le ha colocado a esta. Para serte franco he seguido sus pasos de cerca y en ejemplos anteriores me he aprendido mucho, ya que soy nuevo con el tema de las macros. Con la aclaración me acaba de sacar de una duda y en realidad veo que es mejor buscar la información con un inputbox. Para hacer más claridad en el tema de la información, la macro es para complementar una información que ya es bajada por defecto de una base de datos. La idea de solo buscar la posición es que conserve el orden con el que se baja, ya que al actualizar dicha información se debe volver a subir con la actualización. Lo que se requiere es que al buscar dicha información que es bajada en la Hoja1 y buscada en la Hoja2 por una referencia y al encontrar dicha información me lleva a la primera posición de los elementos con dicha referencia y los datos que se encuentran al lado. Los valores de concepto y nombre se digitan manual. Daré un ejemplo
Hoja1: Código nombre referencia valor concepto...(al buscarlo en la hoja2 trae datos)
               01 12120 500
Están organizados por código y luego por referencia al buscar el código me trae todos los que posean el código y se digita manualmente nombre y concepto, pero conservando el orden de la hoja1.
Muchas gracias por el apoyo.
Entrá al Editor e insertá un módulo.
Allí copiá la siguiente rutina:
Sub buscaCodigo()
'x Elsamatilde
codi = InputBox("Ingresa código a buscar")
'si dejó el campo vacío cancela el proceso
If IsEmpty(codi) Then Exit Sub
'busca el código en Hoja1, col A
Set busco = Sheets("Hoja1").Range("A2:A100").Find(codi, LookIn:=xlValues, lookat:=xlWhole)
If Not busco Is Nothing Then
'encontró el dato
    filax = busco.Row
    busco.EntireRow.Copy Destination:=Sheets("Hoja2").Cells(filax, 1)
    ActiveSheet.Cells(filax, 1).Select
Else
    MsgBox ("No se encuentra el código en Hoja1")
End If
'libero la variable
Set busco = Nothing
End Sub
Ahora pasate a la Hoja2, dibujá un botón con la barra Formulario. Clic derecho sobre el control, Asignar macro y seleccioná esta que te envié.
La hoja1 tendrá los cód en col A, dato que debe ser ingresado en el inputbox.
Pruébala y cualquier duda me volvés a escribir, o me solicitas el libro al correo que encontrarás en mi sitio. No olvides recordarme alias y motivo de consulta.
Buenas tardes Elsa... de nuevo muchas gracias por tu tan maravillosa ayuda y en verdad el código que me diste funciona de maravilla... solo tengo un problema... en caso tal que el código que este buscando esta repetido en varios registros... ¿cómo traigo los traigo todos?
En ese caso tenés que cambiarla por esta otra, donde le agregué las líneas para una búsqueda repetida:
Sub buscaCodigo()
'x Elsamatilde
codi = InputBox("Ingresa código a buscar")
'si dejó el campo vacío cancela el proceso
If IsEmpty(codi) Then Exit Sub
'busca el código en Hoja1, col A
Set busco = Sheets("Hoja1").Range("A2:A100").Find(codi, LookIn:=xlValues, lookat:=xlWhole)
If Not busco Is Nothing Then
'encontró el dato, guardo la fila y también la guardo para buscar repetidos
primera = busco.Row
    filax = busco.Row
    busco.EntireRow.Copy Destination:=Sheets("Hoja2").Cells(filax, 1)
    ActiveSheet.Cells(filax, 1).Select
    'repito para buscar repetidos
    Do
        Set busco = Sheets("Hoja1").Range("A2:A100").FindNext(busco)
        filax = busco.Row
        busco.EntireRow.Copy Destination:=Sheets("Hoja2").Cells(filax, 1)
        ActiveSheet.Cells(filax, 1).Select
    Loop While busco.Row <> primera And Not busco Is Nothing
Else
    MsgBox ("No se encuentra el código en Hoja1")
End If
'libero la variable
Set busco = Nothing
End Sub
PD) Mi mejor recomendación: el manual Programación VBA
Sdos
Elsa
De nuevo gracias por la pronta respuesta y de verdad que me fue muy útil la ayuda ya que si lleno las expectativas que te solicite. Me gustaría saber donde puedo enviarte una hoja de excel con la macro y mostrarte con los datos todo el contenido a ver si de pronto le puedes implementar algo para que quede en perfecto funcionamiento.
De antemano muchas gracias
PD)me interesa el manual ... ¿cómo lo adquiero?
El correo lo encontrarás en mi sitio... no olvides recordarme alias y motivo de consulta.
Allí te comento lo del manual.
Buenos dias Elsa
De nuevo gracias por tus inmensas ayudas que me han servido demasiado
Al correo te envíe la información de la macro y lo que se requiere.
Saludos
Recibido pero no lo leí aún.
Considero entonces que el tema de esta consulta quedó resuelto, por lo tanto no olvides finalizarla.
Sdos
Elsa
Respuesta

Miren tengo un hoja con varios cudros uno tras de otro, por ello inserte una columna que me servira como indicador, para saber donde termina cada cuadro, cada vez que se encuentre un 1 seleccione hacia arriba y derecha y corte todo e inserte a una nueva hoja y luego siga buscando de tal manera que cada cuadro este en una nueva hoja.

Debemos tener en cuenta que no contamos con una cantidad de filas especificas en los cuadros son totalmente diferentes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas