Páginas

jueves, 13 de febrero de 2014

VBA Excel: Funcion para buscar parte de un texto en un libro y devolver un valor adyacente.


Me solicitaron buscar el numero de lista de empaque asociado al numero de factura en un listado. Sin embargo el numero de factura no es unico en cada celda, sino que se encuentra combunado con otros numeros de facturas. No se si con VLOOKUP se podría haber hecho lo mismo, porque el rango a buscar son 3 hojas distintas. El metodo .Find("What", lookat:=xlPart, Matchcase:= False) es apropiado para buscar parte de un texto dentro de una celda.

Option Explicit 'Importantísimo, obliga a declarar todas las variables y ayuda a evitar errores de digitacion con esos nombres.

Function buscar_packinglist(factura As String) 'factura es la variable que contendrá la celda con el valor a buscar

If Not ThisWorkbook.Sheets("Guayaquil").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then

buscar_packinglist = ThisWorkbook.Sheets("Guayaquil").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -9).Value
    
    Else
        If Not ThisWorkbook.Sheets("Quito").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then
        
        buscar_packinglist = ThisWorkbook.Sheets("Quito").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -9).Value
            Else
                If Not ThisWorkbook.Sheets("Spare Parts").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then

                buscar_packinglist = ThisWorkbook.Sheets("Spare Parts").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -8).Value
                    Else
                        buscar_packinglist = "PL no encontrado"
                 End If
          End If
End If

End Function

No hay comentarios:

Publicar un comentario