Acelera la velocidad de BUSCARV

Última actualización el 24/10/2024
Tiempo de lectura: 3 minutos

La función BUSCARV es una de las funciones más utilizadas. Pero en grandes volúmenes de datos, la ejecución puede ser muy lenta 😕😡

Pero gracias a un truco de Charles Williams (Microsoft MVP), es posible mejorar la velocidad de búsqueda de la función BUSCARV.

ACTUALIZACIÓN :

  • Si está trabajando con Excel 2019, 2021, versión Excel 365, La técnica descrita en este artículo ya no es útil. 😮
  • De hecho, para estas versiones, los desarrolladores de Microsoft han modificado el algoritmo de la función BUSCARV y se ha optimizado la velocidad de ejecución.
  • Por otra parteSi está trabajando con una versión de Excel anterior a 2019, la técnica aquí descrita te será de mucha utilidad 👍

¿Cómo encuentra valores la función BUSCARV?

¿Cómo se desarrolló la función BUSCARV? Charles Williams descubrí que la programación de la función BUSCARV no era la misma dependiendo de si elegías la búsqueda de coincidencias o la búsqueda exacta.

  • Para la búsqueda aproximada (4to argumento = 1) es el método binario
  • Para la búsqueda exacta (cuarto argumento = 4) es el método lineal

Y esa es la paradoja de esta función. En el 99,9% de los casos lo que se realiza es la búsqueda exacta y, sin embargo, es el algoritmo menos eficiente.

Técnica para acelerar la velocidad de BUSCARV

El truco consistirá en escribir una función BUSCARV exacta usando la función BUSCARV aproximando 😮

Ejemplo de varios miles de líneas.

Tomemos el caso de un libro de trabajo que contiene en una hoja la lista de 50 empleados de una empresa

Y en otra hoja tienes el listado de días de vacaciones que se toman tus empleados, lo que representa casi 200,000 líneas.

La necesidad es crear una BUSCARV entre las 2 hojas para mostrar el nombre de los empleados según el código de empleado.

Haz una prueba en el resultado de la búsqueda.

Vamos a empezar con Haz una prueba para saber si el resultado de la búsqueda arroja exactamente el resultado deseado. Sí, es una prueba un poco estúpida, pero es lo que hay que hacer.

=RECHERCHEV(A2;$A$2:$A$50000;1;1)=A2

Los datos de tu columna de búsqueda DEBE ordenarse en orden ascendente.

Integre esta prueba en una función SI

  1. Ahora que hemos creado una prueba que verifica si la búsqueda coincidente devuelve exactamente el valor que desea, vamos a poner esta prueba en un Función SI.
  2. Si el resultado de la prueba es verdadero, devolveremos una búsqueda similar pero en la columna que queremos devolver esta vez (cuarta columna aquí)
  3. Terminamos la función SI con un valor cuando la búsqueda no tiene éxito.

Luego se escribe la fórmula:

=SI(RECHERCHEV(A2;Employé!$A$2:$H$50000;1;1)=A2,RECHERCHEV(A2; Employé!$A$2:$H$50000;4;1), "Inconnu")

Fórmula que acelera la velocidad de búsqueda BUSCARV

Y es así como en una sola fórmula acelerarás la velocidad de la función BUSCARV.

Video explicativo

Artículos relacionados

13 Comentarios

  1. Rodrigue
    19/03/2022 a las 17:22

    Hola Sr. Le Guen,

    En primer lugar, muchas gracias por el tiempo que dedicas a crear/editar y compartir el fruto de tu trabajo.

    Entonces tengo un problema en un archivo cuyos valores quiero recuperar de otra hoja.
    Vi tu video y apliqué los 2 métodos para la función "Vsearch", pero todavía no funciona porque todavía recibo el código "#N/A".

    Fui a ver otro de tus videos, que trataba sobre este problema de código #N/A (https://www.youtube.com/watch?v=Fo0Gz0BpF0s), con diferentes formas de abordar este problema, pero nuevamente, nada ayudó.

    También agrego la conversión de cada columna rn a "Número", pero nada también.

    Entonces, me comunico con usted para saber si puedo compartir mi archivo con usted y le agradecería mucho que me dijera dónde está mi error, por favor.

    gracias de antemano por su ayuda

    Responder

  2. Ades
    27/07/2019 a las 22:38

    Gracias por su sitio.
    En la fórmula indicas en blanco sobre fondo gris oscuro
    =SI(RECHERCHEV(A2;$A$2:$H$50000;1;1)=A2,RECHERCHEV(A2;$A$2:$H$50000;4;1), "Inconnu")
    para la igualdad de celda A2, falta la referencia a la otra hoja de trabajo.

    Responder

  3. Marie
    18/01/2019 a las 17:15

    Hola Federico,
    ¿Reemplazar BUSCARV con una COINCIDENCIA anidada en un ÍNDICE acelera la búsqueda?
    Me aconsejaron este truco, pero leyendo tu artículo tengo dudas.
    cordialement,
    Marie

    Responder

  4. Tuya
    12/02/2018 a las 16:07

    ¡Muchas gracias por el consejo!

    Responder

  5. punto
    10/11/2017 a las 21:43

    Realmente efectivo, probado en una pestaña con 60.000 referencias para buscar en una pestaña con 500.000 referencias... 10 minutos con vsearch clásico y 15 segundos con este método.

    Responder

  6. Boisgontier
    25/08/2017 a las 01:05

    Hola,

    Boisgontier

    Responder

  7. hh
    18/04/2017 a las 16:24

    ¡Hola

    Pensé que la búsqueda difusa siempre devolvía el valor más cercano.

    Sin embargo, noto que en ciertos casos devuelve #N/A como en una búsqueda exacta.
    Parece que esto ocurre en el caso en el que mi valor buscado es menor (en la clasificación) que mi primer
    valor de matriz

    ¿Alguna vez te has encontrado con este problema?

    PD: puedo resolverlo así:
    if(esterror(searchchev(a;tb;1;true);"error";if(searchchev(a;tb;1;true)=a;searchchev(a;tb;xx;true);"error"))
    pero se vuelve engorrosa como fórmula

    Gracias de antemano

    Responder

    • Frédéric LE GUEN
      24/04/2017 a las 08:48

      Ojo, hay 2 cosas que no deben confundirse. Ahí estás en el artículo sobre cómo acelerar la velocidad de búsqueda en el caso de una búsqueda exacta (y el truco consiste en utilizar la búsqueda cercana, es cierto). Ahora, si lo que necesita es realizar una búsqueda "clásica" similar, el valor mínimo debe estar en su tabla de referencia, mientras que el valor máximo puede omitirse.

      Responder

  8. Valérie
    21/09/2015 a las 12:29

    ¡Hola y gracias por este consejo que acelera las fórmulas espectacularmente!
    Me gustaría hacer una observación: es fundamental que las celdas tengan el mismo formato, más precisamente la misma longitud.
    Queda una pregunta sin respuesta: guardar un archivo de este tipo lleva mucho tiempo. No puedo explicármelo a mí mismo.
    cordialement,

    Valérie

    Responder

  9. Polos
    03/07/2015 a las 16:26

    Es sorprendente que Microsoft no pueda integrar esta prueba directamente en su función BUSCARV
    ¡Qué mierda!

    Responder

  10. DARMON Henri
    17/06/2015 a las 08:53

    ¡¡¡Siento que estoy retrocediendo 20 años cuando el parámetro 0 o falso no existía!!!

    Responder

  11. El Michel
    19/10/2014 a las 07:01

    De hecho, es una técnica sencilla y eficaz. Gracias por la información. Estoy buscando cómo acelerar la apertura de mi Excel (pasar de 15 segundos a 1 o 2 segundos) (archivo con varios cientos de campos y enlaces a páginas de bases de datos de clientes - Base de datos de piezas con gestión de stock (2000 referencias) - Facturación.

    Responder

Dejar un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.

Jugador Más Valioso de Microsoft 2024

Boletín informativo

1 vez al mes:
Consejos y cuestionarios

    No te enviaremos spam. Puedes darte de baja en cualquier momento.

    Acelera la velocidad de BUSCARV

    Tiempo de leer: 3 minutos
    Última actualización el 24/10/2024

    La función BUSCARV es una de las funciones más utilizadas. Pero en grandes volúmenes de datos, la ejecución puede ser muy lenta 😕😡

    Pero gracias a un truco de Charles Williams (Microsoft MVP), es posible mejorar la velocidad de búsqueda de la función BUSCARV.

    ACTUALIZACIÓN :

    • Si está trabajando con Excel 2019, 2021, versión Excel 365, La técnica descrita en este artículo ya no es útil. 😮
    • De hecho, para estas versiones, los desarrolladores de Microsoft han modificado el algoritmo de la función BUSCARV y se ha optimizado la velocidad de ejecución.
    • Por otra parteSi está trabajando con una versión de Excel anterior a 2019, la técnica aquí descrita te será de mucha utilidad 👍

    ¿Cómo encuentra valores la función BUSCARV?

    ¿Cómo se desarrolló la función BUSCARV? Charles Williams descubrí que la programación de la función BUSCARV no era la misma dependiendo de si elegías la búsqueda de coincidencias o la búsqueda exacta.

    • Para la búsqueda aproximada (4to argumento = 1) es el método binario
    • Para la búsqueda exacta (cuarto argumento = 4) es el método lineal

    Y esa es la paradoja de esta función. En el 99,9% de los casos lo que se realiza es la búsqueda exacta y, sin embargo, es el algoritmo menos eficiente.

    Técnica para acelerar la velocidad de BUSCARV

    El truco consistirá en escribir una función BUSCARV exacta usando la función BUSCARV aproximando 😮

    Ejemplo de varios miles de líneas.

    Tomemos el caso de un libro de trabajo que contiene en una hoja la lista de 50 empleados de una empresa

    Y en otra hoja tienes el listado de días de vacaciones que se toman tus empleados, lo que representa casi 200,000 líneas.

    La necesidad es crear una BUSCARV entre las 2 hojas para mostrar el nombre de los empleados según el código de empleado.

    Haz una prueba en el resultado de la búsqueda.

    Vamos a empezar con Haz una prueba para saber si el resultado de la búsqueda arroja exactamente el resultado deseado. Sí, es una prueba un poco estúpida, pero es lo que hay que hacer.

    =RECHERCHEV(A2;$A$2:$A$50000;1;1)=A2

    Los datos de tu columna de búsqueda DEBE ordenarse en orden ascendente.

    Integre esta prueba en una función SI

    1. Ahora que hemos creado una prueba que verifica si la búsqueda coincidente devuelve exactamente el valor que desea, vamos a poner esta prueba en un Función SI.
    2. Si el resultado de la prueba es verdadero, devolveremos una búsqueda similar pero en la columna que queremos devolver esta vez (cuarta columna aquí)
    3. Terminamos la función SI con un valor cuando la búsqueda no tiene éxito.

    Luego se escribe la fórmula:

    =SI(RECHERCHEV(A2;Employé!$A$2:$H$50000;1;1)=A2,RECHERCHEV(A2; Employé!$A$2:$H$50000;4;1), "Inconnu")

    Fórmula que acelera la velocidad de búsqueda BUSCARV

    Y es así como en una sola fórmula acelerarás la velocidad de la función BUSCARV.

    Video explicativo

    Artículos relacionados

    Boletín informativo

    1 vez al mes:
    Consejos y cuestionarios

      No te enviaremos spam. Puedes darte de baja en cualquier momento.

      13 Comentarios

      1. Rodrigue
        19/03/2022 a las 17:22

        Hola Sr. Le Guen,

        En primer lugar, muchas gracias por el tiempo que dedicas a crear/editar y compartir el fruto de tu trabajo.

        Entonces tengo un problema en un archivo cuyos valores quiero recuperar de otra hoja.
        Vi tu video y apliqué los 2 métodos para la función "Vsearch", pero todavía no funciona porque todavía recibo el código "#N/A".

        Fui a ver otro de tus videos, que trataba sobre este problema de código #N/A (https://www.youtube.com/watch?v=Fo0Gz0BpF0s), con diferentes formas de abordar este problema, pero nuevamente, nada ayudó.

        También agrego la conversión de cada columna rn a "Número", pero nada también.

        Entonces, me comunico con usted para saber si puedo compartir mi archivo con usted y le agradecería mucho que me dijera dónde está mi error, por favor.

        gracias de antemano por su ayuda

        Responder

      2. Ades
        27/07/2019 a las 22:38

        Gracias por su sitio.
        En la fórmula indicas en blanco sobre fondo gris oscuro
        =SI(RECHERCHEV(A2;$A$2:$H$50000;1;1)=A2,RECHERCHEV(A2;$A$2:$H$50000;4;1), "Inconnu")
        para la igualdad de celda A2, falta la referencia a la otra hoja de trabajo.

        Responder

      3. Marie
        18/01/2019 a las 17:15

        Hola Federico,
        ¿Reemplazar BUSCARV con una COINCIDENCIA anidada en un ÍNDICE acelera la búsqueda?
        Me aconsejaron este truco, pero leyendo tu artículo tengo dudas.
        cordialement,
        Marie

        Responder

      4. Tuya
        12/02/2018 a las 16:07

        ¡Muchas gracias por el consejo!

        Responder

      5. punto
        10/11/2017 a las 21:43

        Realmente efectivo, probado en una pestaña con 60.000 referencias para buscar en una pestaña con 500.000 referencias... 10 minutos con vsearch clásico y 15 segundos con este método.

        Responder

      6. Boisgontier
        25/08/2017 a las 01:05

        Hola,

        Boisgontier

        Responder

      7. hh
        18/04/2017 a las 16:24

        ¡Hola

        Pensé que la búsqueda difusa siempre devolvía el valor más cercano.

        Sin embargo, noto que en ciertos casos devuelve #N/A como en una búsqueda exacta.
        Parece que esto ocurre en el caso en el que mi valor buscado es menor (en la clasificación) que mi primer
        valor de matriz

        ¿Alguna vez te has encontrado con este problema?

        PD: puedo resolverlo así:
        if(esterror(searchchev(a;tb;1;true);"error";if(searchchev(a;tb;1;true)=a;searchchev(a;tb;xx;true);"error"))
        pero se vuelve engorrosa como fórmula

        Gracias de antemano

        Responder

        • Frédéric LE GUEN
          24/04/2017 a las 08:48

          Ojo, hay 2 cosas que no deben confundirse. Ahí estás en el artículo sobre cómo acelerar la velocidad de búsqueda en el caso de una búsqueda exacta (y el truco consiste en utilizar la búsqueda cercana, es cierto). Ahora, si lo que necesita es realizar una búsqueda "clásica" similar, el valor mínimo debe estar en su tabla de referencia, mientras que el valor máximo puede omitirse.

          Responder

      8. Valérie
        21/09/2015 a las 12:29

        ¡Hola y gracias por este consejo que acelera las fórmulas espectacularmente!
        Me gustaría hacer una observación: es fundamental que las celdas tengan el mismo formato, más precisamente la misma longitud.
        Queda una pregunta sin respuesta: guardar un archivo de este tipo lleva mucho tiempo. No puedo explicármelo a mí mismo.
        cordialement,

        Valérie

        Responder

      9. Polos
        03/07/2015 a las 16:26

        Es sorprendente que Microsoft no pueda integrar esta prueba directamente en su función BUSCARV
        ¡Qué mierda!

        Responder

      10. DARMON Henri
        17/06/2015 a las 08:53

        ¡¡¡Siento que estoy retrocediendo 20 años cuando el parámetro 0 o falso no existía!!!

        Responder

      11. El Michel
        19/10/2014 a las 07:01

        De hecho, es una técnica sencilla y eficaz. Gracias por la información. Estoy buscando cómo acelerar la apertura de mi Excel (pasar de 15 segundos a 1 o 2 segundos) (archivo con varios cientos de campos y enlaces a páginas de bases de datos de clientes - Base de datos de piezas con gestión de stock (2000 referencias) - Facturación.

        Responder

      Dejar un comentario

      Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

      Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.