Crear funciones similares a BUSCARV con macros en Google Sheets

Поделиться
HTML-код
  • Опубликовано: 26 янв 2025

Комментарии • 100

  • @JuanSGuzman
    @JuanSGuzman  3 года назад +1

    ¿Alguna otra función que ya exista en Sheets pero que este muy limitada y podamos replicar con código de GAS?

    • @robertoareas7887
      @robertoareas7887 3 года назад

      añadir una fila debajo de un dato encontrado usando el ejemplo del video

    • @azvacomunicaciones4236
      @azvacomunicaciones4236 3 года назад +1

      Como hacer una tabla dinámica con macros , ese estaría bien

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      @@azvacomunicaciones4236 Hola!
      Muchas gracias por la idea para un próximo video!
      Ya va a la lista de ""por hacer""
      Saludos!

    • @mariorendonlamontana6064
      @mariorendonlamontana6064 Год назад +1

      Hola,
      como la Función Filter pero desde GAS

    • @JuanSGuzman
      @JuanSGuzman  Год назад +1

      @@mariorendonlamontana6064 Hola! Eso lo hacemos cuando hacemos condicionales desplegables. Tambien se llama filter
      Saludos!

  • @APERFECTS
    @APERFECTS 4 года назад +2

    Muy bien Juan con tus enseñanzas muy didáctico, continúa asi eres uno de los mejores !

  • @mauricioven
    @mauricioven 4 года назад +1

    Un saludo desde Ñuble, Chile. Excelente material

  • @oscarlovarvo
    @oscarlovarvo 3 года назад +1

    Hola Juan, muchas gracias por compartir este conocimiento y hacerlo de forma tan didáctica.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      Hola Oscar
      Mil gracias por tus palabras!
      Un gran saludo!

  • @fernandonunezmichellod2767
    @fernandonunezmichellod2767 3 года назад

    Gracias Juan , me ha servido y luego he aumentado el rango de la tabla y he agregado variables para los indices de columnas y con eso logre generar un formulario con varios valores. EXELENTE.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Hola Fernando
      Excelente!
      Me encanta cuando cogen la base y hacen algo mucho mejor y más completo.
      Felicitaciones!
      Un gran saludo!

  • @luisgermanbenavidesgarcia8090
    @luisgermanbenavidesgarcia8090 3 года назад

    Juan, tu eres excepcional, lo que haces es muy interesantes y pratico, animate con el CRM. La claridad que tienes para aplicar las funciones y Macros de Google apps, permiten automatizar , correos, respuestas, tareas idoneas para hacerle seguimiento a los clientes Potenciales .Tienes las competencias para programar a corto plazo, las herramientas para meternos en la plataforma de Google Cloud a refinar informacion del Big Data con IA. Con gusto seria un contribuyente, con estas funciones , que focalizaran la informacion en un solo lugar , se hace el seguimiento a los clienetes interesados. Pudes empezar con las primeras etapas de ventas , es una aplicacion de consumo inmediato, sus metricas , son informacion de valor para el cumplimiento de metas .

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Es una gran idea
      Mil gracias por la motivación!
      Voy a ir estructurándolo
      Saludos!

  • @MiguelAngel-gh8sc
    @MiguelAngel-gh8sc 2 года назад +1

    Muchas gracias hermano excelente video!!!

  • @yosoydineroenabundancia5088
    @yosoydineroenabundancia5088 3 года назад +1

    Excelente tutorial; me gusto como lo has explicado... Gracias.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Mil gracias por tus palabras!

  • @luisalbertovelandia5117
    @luisalbertovelandia5117 2 года назад +1

    Muchas gracias juan S gran aporte

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      Hola!
      Gracias a ti por tomarte el trabajo de comentar!
      Saludos!

  • @CarlosJimenez-bs1kb
    @CarlosJimenez-bs1kb 4 года назад +1

    Buenas tardes, excelente vídeo!

  • @hectorsanchez9225
    @hectorsanchez9225 4 года назад

    Maestro! me quito el sombrero!

  • @ivan-8a
    @ivan-8a 2 года назад +1

    Muy buen video

  • @JefArtist
    @JefArtist 2 года назад +1

    Juan cual seria la manera que este script agarre un rango entero y no solo una celda para busca informacion, es decir de (B2:B50) por ejemplo, y me brinde la infor 1 celda a la derecha ,saludos
    :

  • @jocykay262
    @jocykay262 11 месяцев назад

    Hola! tengo grabada una macro en una pestaña vertical que traspone los datos a una pestaña horizontal,pero tengo valores en porcentajes y con una formula Buscarv y al traspasarmela me borra la formula de una de las celdas que calcula la comision de la venta...

  • @luisksabal
    @luisksabal 2 года назад +1

    Hola Juan, me encanta la forma didáctica con la que explicas y te agradezco mucho. Hasta hace una semana ni sabia que existían las secuencias de comandos y con tus videos he logrado avanzar un montón. Quisiera saber como incluir el resultado de esta función en la redacción de un mensaje de correo. Ya tengo el envío de correos masivos pero quiero incluir un enlace personalizado que tengo en otra base del mismo spreadsheet.

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      Hola!
      Mil gracias por las palabras!
      Usa la parte del indexOf pero no como función personalizada
      Es decir que el resultado lo pones directamente en el correo
      Algo asi
      var indice=datos.indexOf(buscado)
      var valorencontrado=hoja.getRange(indice+1,3).getValue()
      var mensaje="He aqui lo que he encontrado "+valorencontrado
      GmalApp.sendEmail(destino,asunto,mensaje)
      Ojalá te de ideas
      Saludos!

  • @alexispablojoseescobar4675
    @alexispablojoseescobar4675 Год назад +1

    Hola Juan, muy buen video ! sabes que te queria comentar que al usar el BUSCARVCONARG, me tira el siguiente error: los parametros de la funcion personalizada son demasiados grandes . Uso base de datos superiores a 350.000 Filas, x 5 columnas, hay alguna forma de solucionar ese error ?

    • @JuanSGuzman
      @JuanSGuzman  Год назад +1

      Hola
      La verdad es que 350.000 es demasiado para Sheets
      No te recomiendo usar Sheets, sino Excel, o pasarlo a Google Cloud y traer los datos a Sheets con SQL
      Saludos!

    • @alexispablojoseescobar4675
      @alexispablojoseescobar4675 Год назад

      @@JuanSGuzman Gracias por tu respuesta, si, 350.000 como minimo, porque mi rango de datos es de 1.250.000 filas, antes usaba excel, pero por un tema de licencias ya no uso mas, es por eso que me pase a sheets..
      si paso esos datos a Google cloud, y los extraigo con sql, el rango maximo del extracto es de 25k filas , igualmente estaria necesitando las 350.000 filas para hacer el buscarv...

    • @JuanSGuzman
      @JuanSGuzman  Год назад +1

      @@alexispablojoseescobar4675 No las pases a Sheets
      Ya que estas usando Cloud, puedes hacer la consulta SQL
      Saludos!

  • @nomevean299
    @nomevean299 3 года назад

    Hola muchas gracias por todos tus videos me ayudas mucho, una consulta y disculpa el atrevimiento, hay alguna manera de retrasar la ejecución de una función luego de enviarse el formulario no se uno 3 o 5 segundos? Gracias de antemano

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      Hola!
      Existe un Utilities.sleep(milisegundos), pero la verdad no se si te funcione para ese caso
      Saludos!

    • @nomevean299
      @nomevean299 3 года назад

      @@JuanSGuzman Crack! Gracias estimado, me ayudaste mucho!! Saludos

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      @@nomevean299 Que bueno que le hayas encontrado utilidad. Saludos!

  • @OVALADEZ
    @OVALADEZ 3 года назад +1

    Excelente como siempre, hermano, felicidades por tu labor
    Un comentario, para utilizar esta misma función en otros proyectos podrías utilizar las librerías, sería bueno un video de eso. No es necesario tener que copiar todo el código en asa archivo

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      Hola!
      Muchas gracias por la idea para un próximo video!
      Ya va a la lista de "por hacer"
      Saludos!

  • @MarcosJ3D
    @MarcosJ3D 3 года назад +1

    hola muy buen video pero una pregunta y si quiero que el valor de busqueda no se un lista despleglable si no toda una columna?

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Hola MArcos
      Creo que no te entiendo
      Como una especie de ARrayFormula?
      Un gran saludo!

  • @jahirvargas2849
    @jahirvargas2849 2 года назад +1

    Hola Juan, interesante tu clase. Tengo una necesidad y es la de buscar y actualizar. Podrías hacer un vídeo donde en un casilla predeterminada se ponga un valor y con un boton este haga la busqueda en el rango donde se encuentra la base. Acto seguido poder hacer una acualización de datos y luego con un segundo botón guardar la actualización. Te agradezco si me puedes ayudar con este detalle.
    Bendiciones!

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      Hola Jahir
      Te dejo esta seria que seguramente te va a interesar ya que hago esto
      ruclips.net/video/U9rXV7PFilI/видео.html
      Saludos!

  • @DavidHernandez-bv8es
    @DavidHernandez-bv8es 3 года назад +1

    Saludos Juan, ¿como puedo eliminar el titireteo de brincar de pagina en pagina cuando corro una macro extensa?

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Hola David
      Eliminate la parte que dice .activate()
      Saludos!

    • @DavidHernandez-bv8es
      @DavidHernandez-bv8es 3 года назад +1

      @@JuanSGuzman Disculpa Juan, si logre resolverlo. Muchas grecias.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      @@DavidHernandez-bv8es Excelente!

  • @luisb663
    @luisb663 3 года назад +1

    HOLA
    UTILIZO ESTE EJEMPLO EN UNA HOJA QUE ES LA RESPUESTA DE UN FORMULARIO Y NO FUNCIONA.
    LOGGER.LOG MUESTRA LOS DATOS QUE NECESITO(RANGO D BUSQUEDA Y ELEMENTO A BUSCAR) PERO AL MOMENTO DE LA SENTENCIA INDEXOF NO LO ENCUETRA.
    LA MACRO LA COLOCO PARA QUE CORRA CUANDO LA RESPUESTA DEL FORMULARIO LLEGUE.
    HAY OTRA ALTERNATIVA A ESTE METODO?
    GRACIAS

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      Hola Luis
      Ya revisaste si los datos coinciden (texto y número)
      Prueba con un buscarv normal, a ver si te trae el dato
      Un gran saludo!

  • @davidmancuso3689
    @davidmancuso3689 3 года назад

    Consulta hay posibilidad de que busque dos o mas opciones? Por ejemplo al ingresar dni, traiga apellido y nombre y en otra celda la edad, etc. desde ya muchas gracias.

  • @Jvicseven
    @Jvicseven 2 года назад +1

    si deseo que devuelva multiples resultados, por ejemplo que la lista tenga mas veces el nombre de un pais y la poblacion tenga diferentes valores, como hago que muestre todos los valores ???

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      Lo más fácil ahi es usar FILTER o QUERY
      Saludos!

  • @francogonzalez3103
    @francogonzalez3103 4 года назад +1

    Genial!

  • @andresarnas6844
    @andresarnas6844 4 года назад +1

    Una pregunta Juan, ¿podrías hacer un vídeo de macros que afecten a gráficas?
    Es decir, por ejemplo que al añadir una fila de una base de datos una gráfica automáticamente tome también ese valor.
    Entiendo que debería actualizarse esa gráfica automáticamente al añadir un debajo en una lista, pero no me lo hace porque creo que es una gráfica muy elaborada.
    Es decir, me gustaría que la gráfica tomara más datos digamos

  • @soulstheal
    @soulstheal 2 года назад +1

    puedes hacer un buscarv con las celdas seleccionadas?

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      Muy interesante!
      Yo creo que si se podría
      Saludos!

  • @andrescarbajoalvarez9716
    @andrescarbajoalvarez9716 3 года назад +1

    Estimado Juan, he estado probando el código, pero me sale un error, "Exception: Please select an active sheet first" ....¿ A que puede ser debido?Gracias!

  • @davidmancuso3689
    @davidmancuso3689 3 года назад

    Juan una consulta al usa .map me devuelve un error diciéndome que no es una función, puede ser? Gracias.

    • @davidmancuso3689
      @davidmancuso3689 3 года назад

      function BUSCARDNI() {
      var libro = SpreadsheetApp.getActiveSpreadsheet();
      var hojaBV = libro.getSheetByName("BTDS");
      var hojaDatos = libro.getSheetByName("BDNI");
      var valorBuscado = hojaBV.getRange('C5').getValue();
      var tablaDeBusqueda = hojaDatos.getRange('A2:B1000').getValue();

      var listaDeBusqueda = tablaDeBusqueda.map(function(fila){return fila[0]})
      var indice = listaDeBusqueda.indexOf(valorBuscado);
      var Apellido = tablaDeBusqueda[indice][1]
      hojaBV.getRange('C7').setValue(Apellido)
      NO ME TOMA EL MAP, NI EL INDEXOF COMO FUNCION

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      @@davidmancuso3689 Hola!
      Te falto una s en esta linea
      var tablaDeBusqueda = hojaDatos.getRange('A2:B1000').getValue();
      es getValues()
      Saludos!

    • @davidmancuso3689
      @davidmancuso3689 3 года назад

      @@JuanSGuzman gracias como siempre.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      @@davidmancuso3689 Gracias a ti!

  • @fernandazamora7203
    @fernandazamora7203 4 года назад

    Muy buen video.... pero tengo una consulta como se podría hacerse para hacer una búsqueda bajo dos criterios, por ejemplo: en un base de datos (donde se tienen el nombre, actividad deportiva, estado y la fecha por ejemplo) hacer una búsqueda por el nombre y la fecha, y que me muestre todos los datos asociados a esos criterios?
    Ojala me puedas ayudar, ya se me agotaron las ideas!!! help!!
    Saludos

    • @JuanSGuzman
      @JuanSGuzman  4 года назад

      Hola!
      Ya probaste la función FILTER. Segun lo que entiendo de tu pregunta, esa sería la solución perfecta!
      ruclips.net/video/88EuAIaxClw/видео.html
      Saludos!

  • @avilablaboratiocreativo3422
    @avilablaboratiocreativo3422 4 года назад +1

    Excelente video ! Una pregunta, cuando registras algo en google forms y lo anclas a google sheet, el sistema trae una fecha con hora, minutos y segundos, si haces un buscarv ( con una validación de datos ) con el fin de buscar algo en función de esa “fecha con hora exacta del registro” y extraer las variables, da un error. Podrías ayudarme ??

    • @JuanSGuzman
      @JuanSGuzman  4 года назад +1

      Hola!
      El tema con esto, es que como bien dices es una fecha con hora, que es un numero.
      Por ejemplo
      Cuando te aparece esto
      4/11/2020 7:00:04
      En realidad es
      44139,29171
      Entonces cuando vayas a compararlo o a hacer un buscarv tienes que asegurarte que los dos valores tengan el mismo formato.
      Una forma de asegurarse es convertirlo de pronto a mes o a dia o a hora, o a un texto con un formato especifico
      ME cuentas
      Saludos!

    • @avilablaboratiocreativo3422
      @avilablaboratiocreativo3422 4 года назад +1

      @@JuanSGuzman graciassss lo intenté a ver qué tal 🙏🏻

    • @avilablaboratiocreativo3422
      @avilablaboratiocreativo3422 4 года назад +1

      Sabes cómo hacer para que lo agarre con horas, minutos y segundos ?

    • @JuanSGuzman
      @JuanSGuzman  4 года назад

      @@avilablaboratiocreativo3422
      Hola
      El problema de eso es que tiene que ser muy exacto con segundos y milisegundos
      Se me ocurre hacer una cadena con el dia, hora, minuto y segundo pero puede que haya una forma mas eficiente
      Saludos!

  • @avilablaboratiocreativo3422
    @avilablaboratiocreativo3422 4 года назад

    Sabrías conectar google sheet a la página de ventas de wix ? Para que cuando cambies variables en google sheet se cambien directamente en la tienda de wix ? Podría ser posible, debido a que ambas permiten modificar el codigo, pero yo no sé hacerlo :(

  • @jasonbrenes6613
    @jasonbrenes6613 4 года назад +1

    Como puedo cambiar el código para realizar un buscarv sencillo , pero en tipo listado ejm escribo el valor en A1 y el valor aparece en B1 luego escribo A2 y el valor aparece b2 y así sucesivamente

    • @JuanSGuzman
      @JuanSGuzman  4 года назад

      Hola!
      No se si te refieres a lo que hago en el minuto 15
      Un gran saludo!

    • @jasonbrenes6613
      @jasonbrenes6613 4 года назад

      @@JuanSGuzman si gracias , está perfecto 👍

  • @epc2894
    @epc2894 3 года назад +1

    Hola, si me podrías ayudar por favor, quiero devolver un arreglo con todos los valores que coincidan con la búsqueda, ejemplo, si busco "JUAN", en mi lista que voy a buscar hay 5 registros de "JUAN", en el logger.log que devuelva el arreglo con los 5 registros encontrados.

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      Hola
      Esto se hace con el metodo filter()
      Algo asi como arreglo.filter(fila=>fila[0]==valorBusqueda)
      Esto lo ves mejor en este video
      ruclips.net/video/gwju78H3kW4/видео.html
      Un gran saludo!

    • @epc2894
      @epc2894 3 года назад +1

      @@JuanSGuzman gracias, ahora tengo otra duda, el valor que quiero filtrar es una fecha, o sea todos los registros correspondientes a una fecha, el filter me devuelve un arreglo vacío, cuando ingreso la fecha a buscar. Sabes como puedo hacer el filter para fechas o hay otro metodo?

    • @JuanSGuzman
      @JuanSGuzman  3 года назад +1

      @@epc2894 Hola
      Trabajar con fechas es una pesadilla, jaja.
      Yo soluciono esto sacando en una variable aparte el numero del dia y el del mes y comparandolo
      Algo asi como
      .filter(fila=>fila[0].getDate()=24)
      Algo asi
      Es un tema un poco mas complejo (para mi, jaja)
      Un gran saludo!

    • @epc2894
      @epc2894 3 года назад +1

      @@JuanSGuzman gracias, lo que hice fue convertir la fecha numero, aunque es gastar mas recursos, pero funciona... disculpa pero tengo otra consulta.. jaja.. como puedo finalizar el loop FOR, es decir si se cumple una condición, que salga del bucle. Nuevamente gracias, de ante mano

    • @JuanSGuzman
      @JuanSGuzman  3 года назад

      @@epc2894 Hola!
      Usa la linea break;
      Así
      for (i = 0; i < 10; i++) {
      if (i === 3) { break; }
      text += "The number is " + i + "";
      }
      Saludos!

  • @vladimirataramamacalupu8814
    @vladimirataramamacalupu8814 2 года назад

    Excelente video, adapte tu script para recorrer varias filas, pero la ejecución demora demasiado. Como podría almacenar los valores que se van obteniendo en un arreglo para luego copiar el arreglo en una columna. Gracias de antemano.
    function buscarGSF() {
    var libro = SpreadsheetApp.getActiveSpreadsheet();
    var hojaR = libro.getSheetByName("Reporte");
    var UC = hojaR.getLastColumn()-2
    for (var F=6; F

    • @JuanSGuzman
      @JuanSGuzman  2 года назад +1

      Hola!
      Aquí te dejo un video donde lo hago
      ruclips.net/video/9wPZmpUxeWU/видео.html
      Saludos!

    • @vladimirataramamacalupu8814
      @vladimirataramamacalupu8814 2 года назад +1

      @@JuanSGuzman gracias, consegui el resultado esperado.

    • @JuanSGuzman
      @JuanSGuzman  2 года назад

      @@vladimirataramamacalupu8814 Excelente!

  • @estrellasurena4871
    @estrellasurena4871 4 года назад

    Hola!! A mi me sale error en la linea 13 "TypeError: Cannot read property '0'" ... ¿Alguien sabe por que puede ser??

    • @estrellasurena4871
      @estrellasurena4871 4 года назад

      Ahora no me da error pero solo funciona cuando le doy a play desde la App. También me gustaría poder traer el valor en cada fila (El valor buscado esta en filas dentro de la misma columna y el valor a obtener en su respectiva fila de la columna de al lado. )

    • @estrellasurena4871
      @estrellasurena4871 4 года назад

      Y si lo hago como en el minuto 15 me aparece que en el sheets ERROR porque no tengo permisos para llamar a SpreadsheetsApp.openbyid !!

    • @JuanSGuzman
      @JuanSGuzman  4 года назад

      @@estrellasurena4871 HOla! Disculpa la demora! Pudiste solucionar?

  • @lrod7620
    @lrod7620 9 месяцев назад

    Hay nooo, no entendí nada. Debo ir al canal y ver desde el inicio

    • @JuanSGuzman
      @JuanSGuzman  9 месяцев назад +1

      Cualquier duda q tengas me preguntas
      Saludos!