Macro que permita buscar un dato en una columna y al encontrarlo copie datos de esa fila a otra hoja

Tengo un libro de excel con varias hojas, una de ellas"factura", tiene una plantilla que me permite introducir datos para emitir facturas a clientes "nombre cliente, concepto, importe, etc.." una vez rellena la factura, puedo imprimirla y mediante un botón, almacenar esa factura en otra hoja "Ingresos", cuando pico el botón para guardar factura, la plantilla se pone en blanco otra vez para introducir una nueva factura

Lo que busco es poder seleccionar un numero de factura y que recupere los datos almacenados de dicha factura en la hoja "ingresos" y los copie de nuevo en la hoja de la plantilla "factura" para poder imprimirla nuevamente...

Respuesta
1

Por partes:

1) En la hoja ingresos tienes que añadir una columna (preferentemente a la izquierda de los datos)que puedes llamar "Fila", donde excel capturara el número de cada fila que busques dentro de la hoja Factura.

2) En la hoja Factura tienes que añadir una columna, por ejemplo la A (aunque luego la ocultes, si quieres) donde informe el número de FILA cuando coincida con el dato buscado en la hoja ingresos. Y luego arrastrar la fórmula a todas las celdas de abajo.

=SI(A2=Ingresos!$B$2;FILA();"")

3) Supongamos que esta fórmula la has copiado en todas las filas de la columna K En la hoja ingresos, la primera columna es, como dije, la FILA encontrada, que tendrá esta fórmula:

=SI.ERROR(INDICE(Factura!K:K;K.ESIMO.MAYOR(Factura!$K:$K;FILA(Factura!$K2)-1));"")

Eso te dará el número más alto de todas las filas donde exista ese dato. Si solo hay una, solo te dará una fila y si puede haber varias, entonces debes arrastrar la fórmula hacia abajo en la columna.

4) Teniendo ya el número de FILA en la columna A de Ingresos, lo demás es casi igual. Simplemente hay que copiar el mismo procedimiento en el resto de columnas

=SI.ERROR(INDICE(Factura!A:A;K.ESIMO.MAYOR(Factura!$K:$K;FILA(Factura!$K2)-1));"")

Con esta fórmula te copiarías los datos de la columna A de Factura a la hoja de Ingresos. No te olvides de arrastrar la fórmula con el "botón inteligente" hasta donde quieras usar la fórmula.

Para la columna B:

=SI.ERROR(INDICE(Factura!B:B;K.ESIMO.MAYOR(Factura!$K:$K;FILA(Factura!$K2)-1));"")

.. Y así sucesivamente hasta que tengas todas las columnas.

Solo tienes que rellenar la 1a. Fila con esas fórmulas y luego arrastrarlas hacia abajo.

Creo que esta solución es mucho más cómoda para ti:

https://www.youtube.com/watch?v=m3hfbr_9rNY 

Lo he probado y funciona muy bien. Si necesitas el código VBA te lo paso.

¡Gracias! 

El tutorial es justo lo que busco....mil gracias por todo!!!

este fin de semana me pondré a hacer pruebas para adaptarlo a mi plantilla...

Si te sirvió cierra la pregunta para que no salgan avisos

La pregunta no admite más respuestas

Más respuestas relacionadas