Visual Basic - Macro: Búsqueda con dos criterios

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Macro: Búsqueda con dos criterios

Publicado por Lucía (4 intervenciones) el 19/06/2018 19:27:13
Hola a todos!

Una pregunta: ¿cómo haríais para hacer una búsqueda con dos condiciones?

Por ejemplo, en el libro adjunto hay una hoja llama "previsión" con una serie de números, y en la hoja "info" hay tres columnas, las dos primeras con datos, y la tercera con "?". ¿Cómo haríais para rellenar la columna "Fecha" buscando en la hoja "previsión" la unión de los datos de las dos primeras columnas?

Gracias de antemano.
Saludos!
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: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Macro: Búsqueda con dos criterios

Publicado por Antoni Masana (558 intervenciones) el 20/06/2018 07:05:24
He realizado una prueba a mano y no existe en la fila de la A (Fila 3) ninguna referencia con el valor 2355. Lo mismo pasa con la siguiente, o existe en la fila de la C (Fila 5) ninguna referencia con el valor 2106, lo mismo pasa con el siguiente.

El planteamiento no es correcto. Quizás el valor de la segunda columna es por aproximación pero deberías explicarlo un poco mejor.

Saludos.
\\//_
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
sin imagen de perfil

Macro: Búsqueda con dos criterios

Publicado por Laura (4 intervenciones) el 20/06/2018 08:08:08
Los datos los he puesto de forma aleatoria, ese no es el excel real, solo es un ejemplo. Sólo quiero saber cómo se haría, imagine que los datos están correctos.
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Macro: Búsqueda con dos criterios

Publicado por Antoni Masana (558 intervenciones) el 21/06/2018 07:57:41
No se si hay alguna combinación de formulas que te permita hacer lo que necesitas, pero cuando no la hay o no la encuentro yo me la hago yo mismo.

Esta es una función personalizada que te resuelve el problema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function BuscarX(Material, Horas)
    Dim Fila As Long, Colum As Long
    BuscarX = "#N/A"
    With Sheets("Prevision")
        Fila = 3
        While .Cells(Fila, 1) <> ""
            If .Cells(Fila, 1) = Material Then
                Colum = 2
                While .Cells(Fila, Colum) <> ""
                    If .Cells(Fila, Colum) = Horas Then
                        BuscarX = .Cells(2, Colum): Exit Function
                    End If
                    Colum = Colum + 1
                Wend
             End If
             Fila = Fila + 1
         Wend
    End With
End Function

La línea 13 te devuelve la fecha, solo deberias cambiar el formato de la celda para verla en formato fecha.

Otra opción es:

1
BuscarX = Format(.Cells(2, Colum), "dd/mm/yyyy"): Exit Function

Pero esto te la devuelve en formato texto.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Macro: Búsqueda con dos criterios

Publicado por Lucía (4 intervenciones) el 21/06/2018 14:23:21
Muchas gracias Antoni! Funciona perfecto :)
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

Macro: Búsqueda con dos criterios

Publicado por Lucía (4 intervenciones) el 22/06/2018 10:01:16
Una pregunta: ¿cómo se haría si el valor "Horas" que busca no es exacto sino aproximado?
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Macro: Búsqueda con dos criterios

Publicado por Antoni Masana (558 intervenciones) el 24/06/2018 01:23:41
Si buscamos el inmediato mayor, es decir tenemos 23 y en la tabla hay los valores: 10, 20, 30, 40, etc y queremos que nos devuelva el 30 seria así

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function BuscarX(Material, Horas)
    Dim Fila As Long, Colum As Long
    BuscarX = "#N/A"
    With Sheets("Prevision")
        Fila = 3
        While .Cells(Fila, 1) <> ""
            If .Cells(Fila, 1) = Material Then
                Colum = 2
                While .Cells(Fila, Colum) <> ""
                    If .Cells(Fila, Colum) >= Horas Then
                        BuscarX = .Cells(2, Colum): Exit Function
                    End If
                    Colum = Colum + 1
                Wend
             End If
             Fila = Fila + 1
         Wend
    End With
End Function

Si los valores no están ordenados y/o hay que buscar el mas cercano tanto en positivo como en negativo, en el ejemplo anterior seria el 20 que esta mas cerca que el 30 la cosa se complica un poco mas y tendría que probarlo con datos lo más aproximados a los reales.

Saludos.
\\//_
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