lang="es"> Excel.Macros: Usando Find
Recursos para formacion

Excel.Macros: Usando Find

Cuando tenemos que buscar celdas con un contenido concreto, desde dentro de una macro, recurrimos demasiadas veces a la busqueda secuencial y a las funciones BUSCARx, cuando tenemos una función que podemos usar la mayoría de las veces y con la que podemos trabajar muy cómodamente; se trata de Find.

Find busca dentro de un rango, aunque solo lo puede hacer con string completas, puede buscar también celdas especiales.

Lo primero de todo: busca dentro de un rango, si le indicamos, p.ej:,

ActiveSheet.Find …..

la búsqueda la realizara en la hoja activa; pero si decimos

Range(«A1:B54»).Find…

la búsqueda se restringirá al rango A1:B54, lo que nos puede ir muy bien para encontrar los datos dentro del ámbito buscado…Así mismo, las búsquedas no se detienen por celdas en blanco.

Respecto a los parámetros que podemos usar, os indicamos los que pensamos que pueden ser mas útiles, y si necesitáis mas información, y mientras no preparemos nuestras paginas, os dejo el enlace a la de  microsoft: http://msdn.microsoft.com/en-us/library/office/ff839746.aspx

El único parámetro obligatorio es el que establece lo que queremos buscar, y que es:

what:=»valor a buscar»

Tan solo con esto, la instrucción nos devolverá la celda en la que se encuentre el valor buscado o nothing, en caso de que no lo halle.

After:=celda

Le podemos indicar a partir de que celda queremos empezar a buscar

lookIn:=donde buscar

Con dos opciones: buscar en valores (xlValues) y buscar en formulas (xlFormula)

LookAt:=como buscar

con xlWhole para búsquedas de palabra exacta, o xlPart para búsquedas con parte de la palabra

SearchOrder:= orden de busqueda

para indicarle si queremos realizar la busqueda por filas(xlRows) o por columnas(xlColumns)

SearchDirection:= direccion de la busqueda

Pensado para continuar con la busqueda con dos posibles opciones:

MatchCase:=true/false

Para indicar si ha de detectar mayúsculas y minúsculas

 

 

Ejemplos:

Buscar la cadena CASA y poner el valor HOGAR solo en la columna A

zona=Range("A:A") 
Set c = zona.Find("CASA", lookin:=xlValues) 
If Not c Is Nothing Then 
   inicio= c.Address 
   Do 
      c.Value = "HOGAR"
      Set c = zona.FindNext(c) 
   Loop While Not c Is Nothing And c.Address <> inicio
End If

Encontrar la ultima celda con datos

Set ultima = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column)

Encontrar la primera celda con datos

Set primera= Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, LookIn:=xlValues).Column)

 

Salir de la versión móvil