Excel - BuscarV en macro, devolver mensaje si no es encontrado

 
Vista:
sin imagen de perfil
Val: 41
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

BuscarV en macro, devolver mensaje si no es encontrado

Publicado por SoCu (15 intervenciones) el 19/02/2020 21:27:41
Buenas tardes, hay una parte de la macro que no llego a controlar, a ver si alguien me puede echar una mano.

Tengo creado una macro para realizar una búsqueda en varias hojas, y está funcionando bien porque cuando hay un valor que lo devuelve vacío no muestra en la celda nada, me explico… es un gráfico de turnos, cuando pongo un turno por ejemplo M, realiza la búsqueda y pone la hora, y en las celdas donde no tiene que poner nada las deja sin nada.

Pero lo que quiero es que si por ejemplo pongo el turno TTT que no existe en la tabla donde tiene que buscar, que en la celda de ese día me mensaje #N/A o bien uno que yo le ponga.

Os dejo el archivo como ejemplo para que se vea mejor el código y si me puede echar una mano se lo agradecería.
Solo funciona la primera celda E7 para poder poner el turno.


Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.072
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

BuscarV en macro, devolver mensaje si no es encontrado

Publicado por Antoni Masana (1416 intervenciones) el 24/02/2020 18:26:23
Esta es la solucion a tu macro;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function BuscarvMix(valor_buscado As Range, PrimerColumna As Integer, Devolver As Integer)
    Dim i As Integer, Alto As Integer, Rango, Valor
 
    Application.Volatile
    On Error Resume Next
 
    For i = 3 To ActiveWorkbook.Sheets.Count
        Alto = Application.WorksheetFunction.CountA(Sheets(i).Columns(PrimerColumna).EntireColumn)
        Rango = Range(Cells(1, PrimerColumna), Cells(Alto, PrimerColumna + Devolver - 1)).Address
        Valor = Application.WorksheetFunction.VLookup(valor_buscado.Value, Sheets(i).Range(Rango), Devolver, 0)
        If Valor <> Empty Then Exit For
    Next i
    On Error GoTo 0
 
    If Valor = Empty Then
        BuscarvMix = "#N/A" ' #VBA.CVErr(xlErrNA)
    Else
        BuscarvMix = Valor
    End If
End Function


Esta formula es equivalente a tu macro

1
=SI.ERROR(BUSCARV(Turno!E7;Datos!E6:R22;2;FALSO);SI.ERROR(BUSCARV(Turno!E7;'Datos 2'!E6:R22;2;FALSO);">?<"))

Y si no existe el codigo te muestra >?<

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 41
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

BuscarV en macro, devolver mensaje si no es encontrado

Publicado por SoCu (15 intervenciones) el 24/02/2020 18:51:23
Estupendo Antoni Masana muchas gracias.


Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar