Macro para buscar y exportar datos

He tenido problemas para desarrollar una macro que permita buscar datos a partir del contenido de una celda.

Tengo una tabla con múltiples valores y cada uno tiene un numero de serie, lo que necesito es que busque la ultima celda con ese valor, seleccione toda la fila para poder copiarlo en otra hoja y así rellenar un formulario.

Si me pudieran ayudar.

1 Respuesta

Respuesta
1

Con gusto te ayudo con la macro, específica los siguientes datos:

  1. Cómo se llama la hoja donde están tus datos (hoja origen)
  2. Cómo se llama la otra hoja (hoja destino)
  3. En la hoja origen en cuál celda vas a poner el valor a buscar
  4. En cuál columna se tiene que buscar el valor
  5. Dices: "que busque la última celda con ese valor", eso significa que el valor puede estar repetido y solamente quieres un registro, ¿el último registro?
  6. Qué datos se van a copiar
  7. Exactamente en dónde se van a pegar cada uno de los datos, en una fila en específico, ¿en algunas celdas en específico o en la primer fila disponible después de la última fila con datos?
  8. ¿A qué te refieres con "rellenar un formulario"? La macro tiene que rellenar un formulario, ¿o de eso tú te encargas?

E spero tus comentarios en ese orden. Sal u dos

Hola, gracias por responder, espero me puedas ayudar.

Lo que tengo es una hoja diseñada para mostrar los resultados de ciertas calibraciones de aparatos, la hoja ya está diseñada para rellenarse utilizando listas despegables y listas despegables dependientes, el objetivo es generar una pequeña base de datos, almacenando en una hoja los datos que rellenamos en ese formato, con una macro logré hacerlo, y al presionar un botón envia todos los datos a la tabla, insertando una fila nueva y evitando que existan folios duplicados (parecido a un sistema de facturación).

Uno de los datos que se almacenan es la tabla es un numero de serie, y lo que me gustaría es tener una pequeña interfaz de búsqueda que me permita verificar si ya existe ese numero de serie en la tabla, si existe es ahí donde entra la macro, que seria buscar el ultimo registro, copiar toda la fila (que serian todos los datos), y copiarlos al formato para crear así una hoja de certificación nueva, en caso de que no exista ese numero de serie, se rellena la hoja de manera manual, y al registrarse ya se envían sus datos a la tabla, así en una ocasión futura, los datos ya estarían ahí y solo se tomarían los últimos datos registrados.

1. La hoja de origen se llama “BILAN”

2.La hoja destino se llama “HOME”

3.El valor de origen me gustaría tomarlo de una hoja diferente, que se pueda ingresar en una hoja donde haya una celda especifica puede ser, una hoja llamada “BUSQUEDA” sin importar la celda, algo así como una pequeña interfaz de búsqueda

4.Los valores se encontrarán en la totalidad de la columna “I” de la hoja “BILAN” los valores son números de serie de aparatos

5.Así es la tabla es un recapitulativo, esta se llena automáticamente cada vez que generamos un documento, este transfiere todos los datos de una tabla hacia la hoja “BILAN” que almacena  a manera de historial, es por eso que puede estar repetido el mismo numero de serie, pero en fechas diferentes, lo ideal sería tomar el ultimo ingresado (el más reciente).

6.Se copiaría toda la fila

7.Los datos me gustaría pegarlos en la misma hoja de donde se realiza la búsqueda, para mostrar algo así com un resumen o recapitulativo

8. Utilicé mal el termino formulario, en realidad es una tabla algo así como una factura, no un formulario como tal

De antemano te agradezco el haberme respondido, espero que me puedas ayudar, no tengo mucha experiencia con macros ni lenguaje vba.

Gracias.

No es necesario que conozcas sobre macros o VBA, si te das cuenta, ninguna de mis dudas fue técnica o tenía algo que ver con macros, solamente solicito información de tus hojas que tú conoces.

No entendí a qué te refieres en tu segundo párrafo:

"

Uno de los datos que se almacenan es la tabla es un numero de serie, y lo que me gustaría es tener una pequeña interfaz de búsqueda que me permita verificar si ya existe ese numero de serie en la tabla, si existe es ahí donde entra la macro, que seria buscar el ultimo registro, copiar toda la fila (que serian todos los datos), y copiarlos al formato para crear así una hoja de certificación nueva, en caso de que no exista ese numero de serie, se rellena la hoja de manera manual, y al registrarse ya se envían sus datos a la tabla, así en una ocasión futura, los datos ya estarían ahí y solo se tomarían los últimos datos registrados.

"

Lo que solicitaste es buscar un dato y pegarlo en otra hoja. Entonces pones el dato en la hoja "busqueda", se busca en "Bilan" y se pega en la misma hoja "busqueda", ¿correcto?

Entonces, en la hoja "busqueda" en la celda "A3" pon el valor a buscar y ejecuta la macro. Si el valor buscado en la hoja "Bilan" es encontrado, entonces en la fila 5 de la hoja "busqueda" te copiará último registro encontrado; si no existe te envía un mensaje.

Sub Buscar_Valor()
'---
'   Por.Dante Amor
'---
    '
    Set h1 = Sheets("BILAN")    'Hoja origen
    Set h2 = Sheets("BUSQUEDA") 'Hoja búsqueda
    celda = "A3"                'celda para poner el valor
    fila = 5                    'fila para pegar el resultado
    col = "I"                   'columna para buscar
    '
    h2.Rows(fila).ClearContents
    Set b = h1.Columns(col).Find(h2.Range(celda), lookat:=xlWhole, SearchDirection:=xlPrevious)
    If Not b Is Nothing Then
        h1.Rows(b.Row).Copy h2.Rows(fila)
    Else
        MsgBox "El valor buscado no existe", vbExclamation
    End If
End Sub

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

  1. Abre tu libro de Excel y selecciona la hoja "busqueda"
  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: Buscar_Valor
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

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

.

Avísame cualquier duda

.

¡Gracias! Lo intenté con muchos códigos nunca lo pude hacer, te agradezco muchísimo, ahora solo lo adapto y lo pongo estético... muchísimas gracias!

Una ultima duda y esperando no molestar.

Si quisiera solo copiar ciertas celdas de la hoja "bilan" para mostrarlas en la hoja "busqueda", es decir no toda la información del registro me es útil, solo una parte, ¿qué modificaciones se deberían hacer en el código?

Estas es la información que te solicité:

  • Qué datos se van a copiar
  • Exactamente en dónde se van a pegar cada uno de los datos, en una fila en específico, ¿en algunas celdas en específico o en la primer fila disponible después de la última fila con datos?

Pero decidiste copiar toda la fila.

Para copiar toda la fila se utiliza esto:

H1. Rows(b. Row). Copy h2. Rows(fila)

Si quieres solamente unas celdas, tienes que cambiar la línea anterior por una nueva instrucción, por ejemplo, para copiar la celda de la columna "B" y pegarla en la celda A5:

H1. Cells(b. Row, "B"). Copy h2. Range("A5")

Y debes hacer una línea por cada celda.

Si necesitas ayuda para cambiar el código, con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos.com dentro del tema de microsoft excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con detalle lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas