Post Destacado

Configurando la Impresión Perfecta de un Libro de Excel

Aunque vivimos en una era digital, a veces todavía es necesario imprimir datos, tablas, gráficos, o información de cualquier tipo que hayamos procesado en Excel. Especialmente si estamos hablando de informes financieros, gráficos estadísticos, o simplemente porque preferiremos analizar la información en formato físico. Sin embargo, Excel es muy flexible y las hojas pueden volverse rápidamente muy extensas, lo que puede complicar las tareas de impresión. A continuación, detallaremos el proceso para configurar y preparar tu libro de Excel para imprimirlo de la mejor manera posible en cada caso. Paso 1: Revisión Preliminar Antes de imprimir, debes revisar cómo quedará el documento una vez impreso. Excel ofrece dos opciones para ello: a. Ve a la pestaña "Archivo", luego elige "Imprimir". Aquí puedes ver cómo se verá tu documento antes de imprimirlo. b.    Utiliza la opción 'Diseño de Página'. Esta perspectiva te dará una vista preliminar de cómo se verá tu libro

Búsquedas Avanzadas en VBA con Find

 

No es infrecuente que debamos realizar búsquedas en Excel. De hecho, la estructura de tablas y rangos de celdas resulta sumamente conveniente para encontrar y vincular información entre un valor consultado y otro relacionado. Si estás acostumbrado/a a realizar búsquedas en Excel, a la hora de automatizar una tarea en VBA, puede que te sientas inclinado/a a utilizar estas mismas funciones en el código (tales como BUSCARV, INDICE, COINCIDIR, etc.). Sin embargo, la potencia y flexibilidad que te proporciona redactar tu propio código, también pone a disposición nuevas herramientas para que no te limites por lo conocido. Estamos hablando de la función Find (Buscar), que a su vez deriva de la herramienta de Búsqueda disponible en Excel.

Dicha función agrega potencia a nuestras búsquedas dado que nos permite parametrizarlas a nuestra medida, a la vez que facilita la gestión de aquellos casos en los que la búsqueda no arroja ningún resultado, mismos que con las funciones tradicionales obtendríamos un error que detendría nuestro código.

Hay muchas razones para conocer e implementar Find, de modo que pongamos manos a la obra para dominarla y ganar eficiencia en el código.

Buscar en Excel

Como dijimos, la función Find en VBA deriva de las opciones de búsqueda ya disponibles en Excel a través de la ventana de Búsqueda (Inicio > Buscar y seleccionar)



Si conoces la ventana anterior, sabrás que tiene distintas opciones que podríamos utilizar para realizar las búsquedas, mismas que estarán disponibles en la función Find de VBA.

La función Find en VBA

Primero, revisemos los aspectos técnicos:
  • Find pertenece a objetos de tipo Range, por lo que podemos definirlo como un método de rangos de celdas. Esto significa que sobre un rango definido, podremos aplicar la función Find, para realizar una búsqueda en dicho rango.
    • Range("A1:A100").Find "Escuela Directa" -> Buscará el término "Escuela Directa sobre el rango que va de A1 hasta A100.
  • El valor devuelto por Find:
    • De encontrar una coincidencia, devolverá otro objeto tipo Rango, permitiéndonos acceder a todas sus propiedades, tales como ubicación, fila, columna, y desde luego, valor (entre otros)
    • Si no se halla coincidencia, devolverá una objeto tipo Nothing (¡en lugar de un error!)
  • Su sintaxis tiene la siguiente forma:
Range.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

o en español:

Rango.Find (Que, Después de, Buscar en, Buscar por, Orden de búsqueda, Dirección de búsqueda, Coincidir mayúsculas y minúsculas, Doble Byte, Búsqueda por formato)

Como vemos, tenemos gran cantidad de parámetros de búsqueda que podemos configurar. No te dejes abrumar: salvo el primero, los demás son opcionales, e iremos de a poco entendiendo la lógica detrás de cada uno de ellos. Ante todo, debemos entender primero...

Cómo realizar una búsqueda simple con Find

Tomando los ingredientes anteriores (rango de búsqueda, valor buscado, rango devuelto), estamos en condiciones de plantear nuestra primera función Find.

Consideremos el siguiente rango sencillo de celdas:


En el mismo, nos proponemos hallar el valor "Excel". De modo que ya podremos comenzar a armar la búsqueda:
  1. Rango de búsqueda: A1:A5
  2. Valor buscado: "Excel"
  3. Valor devuelto: necesitaremos almacenarlo en una variable para acceder al mismo (la llamaremos Encontrado)
Por lo cual, en código VBA, resultará del siguiente modo:

Dim Encontrado as Range

Set Encontrado = Range("A1:A5").Find("Excel")

Una vez ejecutado, Encontrado almacenará el rango A3, dado que es donde se produce la coincidencia. Por ejemplo, podríamos acceder a la ubicación de la celda de resultado (Address) utilizando un MsgBox:

Dim Encontrado as Range

Set Encontrado = Range("A1:A5").Find("Excel")

MsgBox Encontrado.Address

Y se mostrará el siguiente mensaje en pantalla:



Demostrando que efectivamente hemos hallado la celda que estábamos buscando. Fantástico, pero tal vez por el momento de poca utilidad...

Utilizar Find como reemplazo de BuscarV

Evolucionemos nuestro ejemplo anterior para implementarlo en una situación más real, donde necesitaremos obtener un valor resultado a partir de un valor buscado. Por ejemplo, en el siguiente caso buscaremos "Excel" para que devuelva el valor de la columna B (tipo de documento):


En este caso, el procedimiento para hallar la coincidencia no se modificará, pero sí nuestra estrategia para obtener el valor resultado: lo que sabemos, es que una vez que hallemos "Excel" en la columna A, necesitaremos devolver el valor que se encuentra en la misma fila y en la columna B. Por tal motivo, podremos acceder a la fila del rango Encontrado, y con ella construir una referencia a columna B + fila Encontrado (Row).

Veamos cómo:

Dim Encontrado as Range
Dim ValorDevuelto as String

Set Encontrado = Range("A1:A5").Find("Excel")

ValorDevuelto = Cells(Encontrado.Row, 2)

MsgBox ValorDevuelto

Y se mostrará el siguiente mensaje en pantalla:


¡Correcto!

Por supuesto, en la práctica no nos limitaremos a mostrar los resultados en mensajes, sino que podremos usar los valores resultado para continuar avanzando con el código.

En nuestro próximo artículo, veremos cómo se gestionan los casos que Find no arroja ningún resultado, y exploraremos más de cerca los argumentos opcionales de Find. Nos vemos!