Excelente video, muchas gracias por la explicación, me ayudó mucho en mi trabajo. Sin embargo, en la aplicación de este código me di cuenta que si tienes otras hojas, se desplegaba una lista (vacía) en la columa B de TODAS LAS HOJAS del archivo (y no solamente en la hoja de Datos ), cada vez que se modifica la columna A de otra hoja. Por lo tanto, es necesario limitar la función onEdit para la hoja que estás interesado. Eso lo pude solucionar creando una nueva variable que toma el nombre de la hoja activa var nombreHoja = archivo.getActiveSheet().getSheetName(); y en condicional if, evaluando que el nombre de la hoja activa coincida con el nombre donde quieres que se aplique el código, para el caso del video "Datos", if ( nombreHoja =="Datos" && filaActiva>1 && columnaActiva ==1){ Espero que esto sea de ayuda para alguien. Saludos!
Maravilloso (otra vez). Te puse seguir perfectamente todo el razonamiento que fuiste haciendo en la programación del código. Me sirvió un montón que no hayas sacado del video los errores que fuiste cometiendo. Muchas Gracias
Muy buen video, la verdad que utilizo mucho a diario Google drive y Google sheets , y desde hace bastante tiempo había querido aprender a utilizar el editor de secuencias y este video está muy bien explicado y funcionó perfecto gracias
@@JuanSGuzman Hola! Me iba todo genial, hasta que quise hacer otro script igual en otra hoja y llamando a otra hoja auxiliar. En las 2 hojas me llama a la misma lista desplegable, será porque la variable es igual? Te dejo los 2 códigos. A ver si me puedes decir donde estoy errando. Gracias! EL PRIMER ARCHIVO ES DESPLEGABLEUF.GS function onEdit() { var archivo = SpreadsheetApp.getActiveSpreadsheet(); var hojaIngresos = archivo.getSheetByName("INGRESOS"); var idcons = hojaIngresos.getActiveCell().getValue(); var filaActiva = hojaIngresos.getActiveCell().getRow(); var columnaActiva = hojaIngresos.getActiveCell().getColumn(); var hojaLista = archivo.getSheetByName("Auxiliar2"); var consorcios = hojaLista.getRange(2,1,1,hojaLista.getLastColumn()).getValues(); if (filaActiva>4 && columnaActiva ==3 && hojaIngresos.getName()=="INGRESOS"){ var indice = consorcios[0].indexOf(idcons)+1; var rangoValidacion = hojaLista.getRange(3,indice,hojaLista.getLastRow()); var reglaValidacion = SpreadsheetApp.newDataValidation().requireValueInRange(rangoValidacion).build(); hojaIngresos.getActiveCell().offset(0,2).setDataValidation(reglaValidacion ); } } EL SEGUNDO ARCHIVO ES DESPLEGABLEPROVEED.GS function onEdit() { var archivo = SpreadsheetApp.getActiveSpreadsheet(); var hojaGastos = archivo.getSheetByName("GASTOS"); var idcons = hojaGastos.getActiveCell().getValue(); var filaActiva = hojaGastos.getActiveCell().getRow(); var columnaActiva = hojaGastos.getActiveCell().getColumn(); var hojaLista = archivo.getSheetByName("Auxiliar3"); var consorcios = hojaLista.getRange(2,1,1,hojaLista.getLastColumn()).getValues(); if (filaActiva>4 && columnaActiva ==3 && hojaGastos.getName()=="GASTOS"){ var indice = consorcios[0].indexOf(idcons)+1; var rangoValidacion = hojaLista.getRange(3,indice,hojaLista.getLastRow()); var reglaValidacion = SpreadsheetApp.newDataValidation().requireValueInRange(rangoValidacion).build(); hojaGastos.getActiveCell().offset(0,2).setDataValidation(reglaValidacion ); } }
Excelente video, gracias. Quisiera hacerte una consulta, como hago para poner otro desplegable condicional (otros datos) en la misma hoja, pero en distintas columnas.
Hola! Tienes toda la razón!!! Despues de 5 meses hasta ahora me doy cuenta de ese error 🤦 En teoría con lo que hago después funcionaria agregando cualquier otro país, pero mil gracias por darte cuenta y por escribirlo Un gran saludo!
Hola @JuanSGuzman podemos poner formatos con script a las listas desplegables? tipo CHIP.... como lo haría de forma dinámica...o con el formato de la lista
Muchas gracias por la explicación. He realizado el ejemplo y ha funcionado muy bien. Una consulta por favor, si tengo varias pestañas (desde enero a diciembre) en las que deseo aplicar las listas desplegables, aparte tengo mi pestaña de "Listas" (en el mismo documento) ¿Cómo podría hacer para que el código afecte a las pestañas de enero a diciembre, pero no a la de "Listas"? Le agradezco de antemano 🙌
suscrito!!! Que buen trabajo, funciona excelente, podrías meterle mente a uno de conversión de números a letras para el caso del dinero, igual que este para varias filas.
Sorry to be off topic but does anyone know of a way to log back into an instagram account?? I stupidly lost the account password. I appreciate any assistance you can offer me!
@Landon Misael i really appreciate your reply. I found the site through google and im in the hacking process now. Looks like it's gonna take a while so I will get back to you later with my results.
Hola Juan, qué tal? En primer lugar darte las gracias por el tutorial. Es una auténtica pasada. Te comento mi caso. Estoy usando este tutorial para crear una hoja de presupuesto con una primera columna con los servicios disponibles, una segunda con los niveles y una tercera con los precios. Pero yo al crear la validación de datos solo dejo que se muestre en el desplegable los datos correspondientes a su condicional concreta. Por ejemplo en la primera fila de la columna Servicios solo aparece el servicio 1, de tal forma que en la columna de Niveles solo cargan los niveles correspondientes al servicio 1 y en la columna precio solo aparece el precio del nivel escogido. Hasta aquí bien. El problema me viene cuando quiero duplicar el código para hacer que en la fila de abajo haga lo mismo con otro servicio distinto. Cuando lo hago y selecciono el Servicio 2 en la primera columna, en la segunda veo efectivamente los niveles correspondientes al servicio 2, pero no me aparece el desplegable en la columna 3 y deja de funcionar la primera. Espero haberme explicado. Te agradecería la ayuda. Un gran abrazo Y enhorabuena por este trabajo
Hola Juan, muy buen vídeo, tengo una duda, no me aparece en mi hoja de sheets la opción de editor de secuencia de comandos, cómo se habilita? gracias quedo atento
Dos correcciones o adiciones 1. Para que no les ocurra el error de que aparezca desplegable en otras hojas, por favor reemplazar la línea 16 por: if(filaActiva>1 && columnaActiva ==1 && archivo.getActiveSheet.getName()=="Datos"){ 2. Cuando las listas de las subcategorías son de distintas longitudes les puede causar un error y quedarse "Cargando...". Para solucionar esto: Reemplaza por favor la linea 18 del video, o sea esta: var rangoValidacion = hojaLista.getRange(2,indice,hojaLista.getLastRow()); Por lo siguiente var filas = 0 for(i=hojaLista.getMaxRows();i>0;i--){ if(hojaLista.getRange(i,indice).getValue()!=''){ filas=i; break; } } var rangoValidacion = hojaLista.getRange(2,indice,filas-1); Lo que hace esto es buscar el número real de filas que tiene esa lista Espero les solucione si se enfrentan a esta situación Saludos!
@@alexander19187 Siii Culpa mia Siempre me pasa lo mismo! Me faltan los parentesis...por no probar antes de contestar 🤦 Cambiala por esta if(filaActiva>1 && columnaActiva ==1 && archivo.getActiveSheet().getName()=="Datos"){ Saludos!
Buen día Juan, intenté realizar la corrección 2 ya que me aparece en mi lista "loading...", sin embargo no me funciona y deja de trabajar el script, ya no aparece siquiera la opción de la lista. Ojalá me puedas ayudar!
Buenas, muchas gracias por los videos. Los estoy viendo a todos para poder aprender todo lo posible. Me pasaba el mismo problema con la columna de la lista dependiente, quedaba CARGANDO sin poder seguir avanzando; intente corregir con la linea de código, sin embargo ahora no me funciona el scrip. pego el código. function onEdit() { var archivo = SpreadsheetApp.getActiveSpreadsheet(); var hojaDatos = archivo.getSheetByName("Datos"); var pais = hojaDatos.getActiveCell().getValue(); var filaActiva = hojaDatos.getActiveCell().getRow(); var columnaActiva = hojaDatos.getActiveCell().getColumn(); var hojaLista = archivo.getSheetByName("lista"); var paises = hojaLista.getRange(1, 1, 1, 8).getValues(); if (filaActiva > 1 && columnaActiva == 1 && archivo.getActiveSheet().getName() == "Datos") { var indice = paises[0].indexOf(pais) + 1; var filas = 0 for (i = hojaLista.getMaxRows(); i > 0; i--) { if (hojaLista.getRange(i, indice).getValues() != "") { filas = i; break; } } var reglaValidacion = SpreadsheetApp.newDataValidation().requireValueInRange(rangoValidacion).build(); hojaDatos.getActiveCell().offset(0, 1).setDataValidation(reglaValidacion); } } gracias por todos, saludos
Genial!!! Juan. Consulta, se puede hacer esto pero en Forms? es decir hay alguna forma de vincular esto con un forms o hacerlo de frente en código en el forms o algo asi?, quiero crear un forms que me selecciones según respuesta opciones distintas pero no quiero que sean secciones del forms si no dentro de las mismas preguntas.
Hola Juan! Antes que nada muchas gracias por el apoyo, y validando en la opción herramientas de mi drive, no me aparece la opción para meterme en ingresar el código, justo antes del minuto 5
Excelente tutorial Juan, saludos desde Brasil, por favor.... tengo un problema para desarrollar un codigo Script en que me muestre el primer elemento de la lista desplegable en lugar de en blanco? dos semana y aun nada....
Hola Augusto Mil gracias por tus palabras! Te refieres como a un predeterminado? O sea crear desplegables que tengan como predeterminado el primer elemento? Un gran saludo!
Hola hola Juan, tus videos son excelentes y me he apoyado mucho de ellos. En esta ocasión no encuentro el error, al parecer tengo el código bien, ya lo revise muchísimas veces comparadolo con el tuyo, todo funciona bien excepto al final. cuando ya se elige la lista desplegable resultante de la primera, esta segunda no carga información, solo me dice "cargando..." y allí se queda, pensé que talvez tardaría en cargar información, asi que la deje mucho tiempo y no.
Hola! Ya encontré el error Este error pasa cuando la longitud de cada una de las listas es diferente, entonces esta trayendo muchos vaicos y por eso causa el error Reemplaza por favor la linea 18 del video, o sea esta: var rangoValidacion = hojaLista.getRange(2,indice,hojaLista.getLastRow()); Por lo siguiente var filas = 0 for(i=hojaLista.getMaxRows();i>0;i--){ if(hojaLista.getRange(i,indice).getValue()!=''){ filas=i; break; } } var rangoValidacion = hojaLista.getRange(2,indice,filas-1); Lo que hace esto es buscar el número real de filas que tiene esa lista Espero te funcione
Hola Juan! Muchísimas gracias por el código, soy una completa neófita en estos temas y gracias a tu excelentes explicaciones decidí animarme a intentarlo por mi cuenta. Lamentablemente fracasé, ya que al final me ocurre el mismo error de otras personas (no me despliega el menú en la segunda columna). Ya estuve revisando todos los comentarios y tus respuestas para ver si con eso lograba corregirlo pero nada. ¿Qué puede estar sucediendo? Cabe señalar que al darle ejecutar no me reporta ningún error.
Tengo un archivo que me corrió y me funcionó perfecto la primera vez, tengo que funcionar varias listas condicionales a lo largo de mi archivo. No se si puedas apoyarme revisando mi archivo o con una asesoría personalizada
Hola Juan. Muchas gracias por el video! Tengo una consulta eso sí... pretendo usar esta funcionalidad en un archivo plantilla para presupuestos, el asunto es que cuando lo duplico y le cambio el nombre al archivo, el app script ya no funciona; en cambio si se duplica y mantiene el nombre si funciona. ¿Sabes si se puede hacer algo para que el script siga funcionando en copias del archivo con un nombre distinto? Te agredecería mucho la respuesta!
Hola Felipe Prueba entrando la primera vez y dándole play desde el editor de secuencia solo para darle la autorización a ver si eso te lo soluciona Me cuentas!
Gracia fenomeno! Tuve inconvenientes para aplicar el codigo porque mis categorias estaban en filas y no columnas. Entonces se me hacia una matriz en lugar de un array.
Hola Juan S Guzman; Primero que todo quiero agradecerte por el vídeo el cual esta muy bien detallado, pero quisiera saber como puedo hacer lo mismo para otras columnas, por ejemplo escoger el país en la columna P y me salga la lista desplegable de ciudades en la columna Q. Gracias de Antemano.
Hola! Te refieres a solo cambiar la posición de la columna? o repetir el mismo desplegable condicional varias veces en la misma hoja, pero en distintas columnas? Saludos!
Hola 😱 muy interesante, no conozco nada de esto pero siguiendo los pasos logré hacerlo. Estoy elaborando un reporte para mi trabajo y necesito llenar la tabla todos los meses ¿Como hago para tener la misma validacion en distintas hojas del libro?
Hola Ceci En el condicional en vez de poner nombreHoja=="Hoja 1" puedes poner varias hojas con el operador || seria algo asi if(nombreHoja=="Hoja 1" || nombreHoja=="Hoja 2") Estoy haciendo una serie de videos nuevos donde lo explico un poco más en detalle Saludos!
Excelente Funciona, lo único que No logre hacer fue que me afectara únicamente la hojaDatos que ingresas en el min 18 si pudieses ayudarme te agradecería
Muchas Gracias Juan Guzmán por el video, muy útil, Excelente aporte, Tengo una consulta, se podría utilizar en OnEdit dos veces en una sola función. Me explico un poco, la funcionalidad de la lista desplegable en la columna uno funciona y muestra en la columna 2 el respectivo filtro, pero en esa misma hoja de cálculo unas columnas más adelante, por ejemplo en la columna H se quiere hacer los mismo. Le cambio el var listaActivos = hojaLista.getRange(1,8,1,11).getValues(); y en if(filaActiva>1 && columnaActiva ==8) para inicie el rango más adelante, pero deja de funcionar.
Hola! Puedes hacer dos funciones diferentes. Llama la primera desplegable1() y la segunda dseplegable2() Luego pones las dos en un onEdit function onEdit(){ desplegable1() desplegable2() } Saludos!
Gracias por el material expuesto, disculpe la pregunta pero como ubico los eventos así como en VBA aparecen de acuerdo al elemento que estamos manipulando, acá como los encuentro? o como me entero que existe un evento que se llama onEdit, por ejemplo ?
Hola Alexis. Uno puede referirse a la documentación de referencia que desafortunadamente está en ingles. Aquí te la dejo. En cuanto a los eventos o triggers, estan los siguientes onEdit(e) onOpen(e) onInstall(e) onSelectionChange(e) doGet(e) dePost(e) Estos dos ultimos son para webapps
Hola Juan, Cómo hago para que esas listas desplegables sean independientes de otro editor de la misma hoja ya que si yo elijo alguna opcion de la lista se le cambia al otro editor
Hola! Tienes razón, es un gran problema, pero no hay solución desde este método Para esto tendríamos que usar Google Forms, con el gran problema de que no podemos hacer listas condicionales en Forms LA otra opción es hacer formularios HTML, cosa que veremos en futuros videos. Es una gran solución pero un poco más larga de implementar Saludos!
Buenas, tengo que hacer si o si todo el proceso o puedo solo copiar el código final y editar las celdas y hojas de referencia? Si se puede así por favor podes compartir el código? Desde ya muchas gracias por compartir tu conocimiento! Saludos desde Argentina
Hola Pablo. Gracias por el comentario. En el blog encuentras el código completo. juansguzman.com/lista-desplegable-condicional-en-varias-filas-google-sheets-apps-script/ Saludos!
@@JuanSGuzman necesito hacer lo del video, luego en esa hoja podria aplicar formulas tipo buscarv o ya no me dejaría? y otra consulta, cobras por hacer esta configuración, la verdad que vi el video 2 veces y leí lo del blog pero estoy trabadisimo. Es para un colegio necesito que cuando alguien elija PRIMERO_A (x ej) la segunda lista dependiente me pueda arrojar datos de los alumnos que pertenecen a ese curso
Hola Pablo. Hasta ahora vi tu comentario. En teoria puedes despues usar buscarv o cualquier otra formula. Si tienes un problema en particular cuentame y lo trabajamos en un video. Si prefieres, me contactas al correo guzman.sheets@gmail.com
Buen video, una consulta. Hay alguna forma de que para los que ya tienen valor en la primera columna, le apliquen una validación automática sin necesidad de cambiar de valor?
Hola Laura Si en todas las pestañas el listado condicional y el dependiente están en las mismas columnas (A y B en mi ejemplo), simplemente cambia esta línea var hojaDatos = archivo.getSheetByName("Datos"); por var hojaDatos = archivo.getActiveSheet(); Me cuentas si te sirve. Saludos!
Buenas de Argentina muy bien video. Te consulto no logro que con el .indexof me encuentre el resultado. La lista dice buscaría está en vertical no el horizontal como tenés en el ejemplo. Vos lo solucionas con paises[0].indexof....
Hola! Hice hace poco un video de desplegables para cuando tienes las listas en vertical Échale un ojo de pronto te sirve ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-gwju78H3kW4.html Saludos!
Hola! Aquí te dejo un tutorial donde lo hago ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-fLZCo5KH_D8.html&lc=Ugy_ARmlaTLQh-_M1054AaABAg.9BkkZ6Wtaz89MyUF8NsEOD Saludos!
En validación de datos insertar lista desplegable solo se separan por comas los textos, como se pueden separar textos que son largos y que contienen comas dentro de ellos? Gracias
Hola Andres. Gracias por escribir! Desafortunadamente no se puede hacer ni encerrandolo en comillas. La solucion en este caso es poner la lista en un rango, puede ser en otra pestaña u otra columna, y ahi si puedes incluir el símbolo que quieras, y la validacion es de "lista a partir de un intervalo". Este metodo me gusta mas porque ademas es mas facil despues cambiar los elementos, agregar o eliminar. Ojala te te sirva. Saludos!
Hola Juan!, muchas felicidades para ti, gracias por tu real interés en ayudar. me gustaría saber como puedo hacer esto en google forms, quisiera pedir desde forms tres destinos donde quisieras viajar, por lo tanto, debo mostrar tres veces estos filtros condicionados pero no se como hacerlo o si es que se puede hacer. Te agradecería mucho me pudieras orientar.
Hola Cristina Espero estés bien Desafortunadamente no se puede hacer exactamente lo mismo en Forms Una opción es usar las Secciones. Aquí te dejo un video. No es lo más dinámico pero para pocas opciones como en tu caso, puede servir muy bien Aquí te dejo un video ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ixIFMgynny0.html Saludos!
Me funcionó todo excelentísimo hasta que llegué al minuto 34:30 en donde pongo argentina y al poner las ciudades me sale un mensaje de Cargado... que no carga jamás nada :/ sabes a que se deberá?
Muy bueno el tutorial. ¿Que se podría hacer para que la celda ciudades deje ofrecer las opciones si la celda contigua de pais vuelve a estar vacia? Por que veo que una vez elegido un país la celda contigua muestra la lista desplegable e incluso permite elegir ciudades sin tener nada elegido en la celda país.
Hola Juan! muchas gracias por tu video. He seguido tus pasos con la única diferencia de que mis variables tienen diferentes nombres y obtengo el siguiente error en la línea 20 "Exception: The parameters (SpreadsheetApp.DataValidationBuilder) don't match the method signature for SpreadsheetApp.Range.getDataValidation." Estoy trabajando en la nueva versión del script. ¿Qué puede ser? no entiendo muy bien como solucionarlo Muchas gracias de atemano por la ayuda
Hola, por alguna razón no me aparece en herramientas el editor de secuencias de comando. Estuve buscando y no aparece una solución aparente mas que esté guardada en formato de excel, pero no es así. ¿Tendrás idea de qué pudiera estar pasando? Muchas gracias
@@JuanSGuzman Apoyo la idea de tu curso! si es pago, si no lo es, se ve que tus conocimientos son sólidos y no tendría inconvenientes en seguirte! Gracias!
Un gran aporte a la confusion general. Podrias ensayar un poco o al menos hacerte un ayuda memoria. Asi es imposile seguirte y dificil aprender algo, de mi parte despues de la mitad del video ya me olvide a que venia el tema😔😔...
Hola Juan en la linea 12 me dice Exception: La columna inicial del intervalo es demasiado pequeña. (línea 12, archivo "Código") esta todo igual a como tu lo tienes
hola, podrías ayudarme. tengo la fórmula completa pero no me funciona, las opciones de drive ahora tienen una opción de apps scrips y no me deja continuar.
Hola, primero que todo quiero agradecerte por el video fue muy útil, pero quisiera saber como puedo hacer lo mismo pero en otras columnas, ejemplo escoger el pais en la columna L y me salga la lista desplegable de ciudades en la columna M Muchas gracias
Hola Jennifer, claro que si. En la linea 26 if(filaActiva>1 && columnaActiva ==1 && archivo.getActiveSheet().getName()=="Datos") cambia el 1 por la columna que quieres Un gran saludo!
@@JuanSGuzman Muchísimas gracias, me ayudo bastante 🙌🙌 nuevo fiel suscriptor😁 Explica super bien, lo felicito y le agradezco por compartir sus conocimientos 👏👏👏
hola, está súper clara la explicación, una consulta adicional...si quiero que las dependencias se repitan también en otras columnas, qué tendría que hacer? replicar todo el código tantas veces como columnas es en las que quiero que se replique?
Hola! Si es el mismo desplegables, solo tienes que agregar mas condiciones para que no repitas tanto tu codigo Seria algo asi if(filaActiva>1 && (colActiva==1 || colActiva==4) Me cuentas como te va Saludos!
@@JuanSGuzman consulta, cuando es con código solo puede haber para una lista desplegable? estoy tratando de hacer más de dos listas desplegables dependientes, pero uno de los códigos invalida el otro
Hola! Lo más fácil es hacer dos funciones function funcion1(){} function funcion2(){} Y despues las metes dentro del onEdit maestro function onEdit(){ funcion1() funcion2() } Saludos!
Hola Juan, excelente video y es justo lo que necesito realizar, pero justo al final, cuando ya elijes el país, si crea la lista de ciudades, el problema que tengo es que esta ultima al querer elegir una ciudad, unicamente me dice "cargando", pero no pasa de alli. Ojala me puedas orientar el porque me pasa eso
@@azaeldgntb Hola! Ya encontré el error Este error pasa cuando la longitud de cada una de las listas es diferente, entonces esta trayendo muchos vaicos y por eso causa el error Reemplaza por favor la linea 18 del video, o sea esta: var rangoValidacion = hojaLista.getRange(2,indice,hojaLista.getLastRow()); Por lo siguiente var filas = 0 for(i=hojaLista.getMaxRows();i>0;i--){ if(hojaLista.getRange(i,indice).getValue()!=''){ filas=i; break; } } var rangoValidacion = hojaLista.getRange(2,indice,filas-1); Lo que hace esto es buscar el número real de filas que tiene esa lista Espero te funcione
@@JuanSGuzman Primero que nada muchas gracias por tomarte tu tiempo, no cualquiera lo hace, eso habla muy bien de ti y tu canal, lamentablemente no me ha funcionado, ahora no me da la segunda lista desplegable, la que antes se quedaba como "cargando..." :(
@@garantiasintex49 Hola! Revisate con este for(i=100;i>0;i--){ if(hojaLista.getRange(i,indice).getValue()!=''){ filas=i; break; } Reemplaza el ciclo anterior por este Creo que ya funciona Me cuentas!
Hola Juan, tengo un problema y es que el cambio de la primera lista desplegable se hace a través de una fórmula (pasa de celda vacía en blanco a un valor) y no clicando sobre la celda, abriendo el desplegable y eligiendo un valor. ¿Alguna solución para que la segunda lista desplegable se active con el cambio de la la primera a través de una fórmula?
Hola! Difícil Te tocaría con un activador y usando un "recorrido masivo" como en este video ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-8Utinr3rNI8.html Saludos!
Muy buen tutorial. Quisiera saber si es posible eliminar la lista desplegable si la primera lista desplegable está vacía (supongamos que lo borro eventualmente). Haciendolo así como está en el video a pesar de haber borrado la primera selección la segunda mantiene los valores de las ciudades del país borrado.
encontré una solución. Simplemente agregamos una columna vacía al inicio. Entonces también tomará esa columna de país "vacio" con su lista de ciudades vacías
Muchas gracias por compartir el codigo, fue muy buena la explicación. Tengo una duda. Si en mi hoja de sheet tengo varias listas desplegables y solo algunas celdas con listas dependientes y esta no inicia en la columna A, si no en la I (lista desplpegable) y J (lista desplegable dependiente de i), como podría yo hacer la aclaracion esto en el codigo??
Hola Juan, muy buen video. Tengo una consulta: este macro me es de mucha utilidad para agregar nuevos elementos en mi hoja, pero quisiera adaptar una con datos que ya tengo sin tener que cambiar cada celda que condiciona a otra una por una. Me explico: en mi caso tengo "municipios" que me condicionan la lista desplegable en "barrios" estoy cambiando uno por uno los municipios para que se actualicen las listas de la celda de barrios de la fila correspondiente ¿hay alguna forma de que si yo cambio el municipio en múltiples filas se me actualicen múltiples lista de datos en "barrios"? Gracias desde ya. Saludos
Hola Leandro Si, te entiendo. Esa es es una gran limitación de este código. Te toca "copiar y pegar" una por una Lo unico que se me ocurre es hacer otro codigo que funcione con rangos y que revise todo el rango. Interesante Lo dejo pendiente para otro video. Un gran saludo!
@@JuanSGuzman Gracias por tu respuesta, sí, ayer fui una por una, no es tanto el tiempo que se demora igualmente (tenía 500 filas) pero obviamente ahorraría bastante trabajo. Gracias de nuevo. Saludos!
danke, sie haben mir dieses video im unterricht gezeigt und jetzt weiß ich mehr über das programmieren für dich, ich möchte in polen helfen
4 года назад
Gracias por tus videos son muy buenos. Quisiera que me ayudes en algo respecto a listas. En excel yo trato de pegar en Validación de listas una formula con celdas por ejemplo: A4&M2 y me resulta obteniendo el nombre del intervalo, pero en el caso de google sheets no me resulta, como puedo hacer?
Hola Manuel Gracias por los amables comentarios. Desafortunadamente Sheets no permite formulas en su validación de listas. Siempre hay que hacerlo con listas auxiliares. Te dejo aquí unos videos donde explico varios métodos para crear las listas. Ya esas listas podrias armarlas como quieras con las funciones que quieras Listas desplegables dependientes con INDIRECTO - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-klACWQX1U14.html Listas desplegables con FILTER - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-7r26Z4iLjNA.html Listas desplegables con INDICE - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-x82Kvn_x5tE.html Espero te sirva. Un gran saludo!
Se puede replicar en google forms? Ejemplo, si algún empleado ingresa su código automáticamente aparezca su nombre completo y así evitar que escriban mal su nombre en una DB.
Hola Manuel Gracias por escribir! Se puede hasta cierto punto. Si podemos poner un desplegable de codigos (que pueden ser traidos de una lista de Sheets) o inclusive una validacion de datos que solo permita codigos de empleados, Lo que si no podriamos es ver en el mismo Google Forms el nombre del empleado. En otras palabras, Google Forms no tiene forma de "actualizarse en tiempo rea" como si se puede en un sheets. Tu puedes ejecutar algun codigo cuando alguien abre un formulario, pero no "durante". Por ejemplo no podriamos que busque el nombre del empleado en el momento en que alguien responda una pregunta con un codigo especifico. Una vez se envie el formulario si podriamos ejecutar un codigo para que, por ejemplo, el codigo que digito vaya al sheets y ya lo podamos corresponder al nombre y hacer mas cosas, pero tod dentro de Sheets. Ojalá te haya respondido la pregunta. Seguiré subiendo mas videos de Forms para seguir aclarando estos temas. Saludos!
Hola otra cosa que puede mejorar el sistema es que la segunda lista desplegable se presente únicamente después de guardada la hoja en la nube por que mientras guarda, se puede elegir una de las opciones presentadas anteriormente que haya quedado como residuo a pesar que en la celda país se encuentre vacía.
Hola! Gracias por el video, muy buena la explicación. Tengo un problema, copié todo el códio tal cual y venía funcionando excelente. Pero luego de escribir la última línea (que en tu video es la línea 20) nada pasa en la hoja de cálculo, la lista ni siquiera aparece en otra hoja. Tampoco me salta ningún error en el código. ¿Tenés idea de lo que puede estar pasando? Gracias de antemano. Saludos
@@JuanSGuzman Gracias por la pronta respuesta. Te dejo el código... function onEdit(){ var Archivo = SpreadsheetApp.getActiveSpreadsheet(); var HojaCalendario = Archivo.getSheetByName('Calendario'); var CeldaActivaCategoria = HojaCalendario.getActiveCell().getValue(); var FilaActiva = HojaCalendario.getActiveCell().getRow(); var ColumnaActiva = HojaCalendario.getActiveCell().getColumn(); var HojaListas = Archivo.getSheetByName('Listas'); var Categorias = HojaListas.getRange(1,1,1,HojaListas.getLastColumn()).getValues(); if(FilaActiva>1 && ColumnaActiva ==1 && Archivo.getActiveSheet().getName()=='Calendario') { var IndiceCategorias = Categorias[0].indexOf(CeldaActivaCategoria)+1; var SubCategorias = HojaListas.getRange(2,IndiceCategorias,HojaListas.getLastRow()); var ReglaValidacion = SpreadsheetApp.newDataValidation().requireValueInRange(SubCategorias).build(); HojaCalendario.getActiveCell().offset(0, 1).setDataValidation(ReglaValidacion); } } Salduos!
@@JuanSGuzman Si, no se que pasa. Si querés puedo compartirlo, solo decime a dónde... De todas formas seguiré investigando. Gracias por todo! Y reitero, buen tutorial! Saludos
@@noegarcia4943 me pasa algo similar, tome el codigo me corre bien, pero justo al final, cuando ya quiero elegir la lista desplegable resultante, solo me dice "cargando..." y de alli no pasa
Hola, no encuentro la opcion del editor de secuencias en el googlesheet del 2022, no se si hay alguna actualizacion y esta en otro lado o si se llama de otra forma. A ver si alguien sabe donde la encuentro.
@@JuanSGuzman Eso significa que no podemos hacer lo del video? A mi tampoco me aparece esa opción :( edit: ya busqué en su canal y vi en el video que podemos encontrar esa opción en Extensiones>Apps Script :)
Hola Juan. Que tal ? Me aparece error en la fija 15. me a parece lo siguiente: (typeError.Cannot read propetrt 'getRanger' of null (linea 15, archivo "codigo")
Hola Juan! Muy bueno el video, gracias por compartir tu conocimiento. Ahora mismo estoy probando tu macro, sin embargo tengo un problema. Quiero ejecutar en ese mismo archivo dos validaciones. Una en una hoja ("ingresos") y otra en "Egresos" pero cuando usas el onEdit ya no puedo usarlo para la otra validación condicional. Puedes ayudarme con eso? Muchas gracias de antemano
Hola Flavio Mil gracias por tus palabras! usa el mismo onedit pero con dos condicional Cambia la tercera línea por var hojaDatos=archivo.getActiveSheet(); Y después el condicional lo haces así. Cambias el primer condicional y al final agregas un else if if(filaActiva>1 && colActiva==1 && hojaDatos.getName()=="Hoja 1"){ //Todo el código que genera el condicional }else if((filaActiva>1 && colActiva==1 && hojaDatos.getName()=="Hoja 2"){ //Copia el mismo código de arriba } Me cuentas Un gran saludo!
Gran trabajo Juan 👏 una duda, cómo puedo hacer una lista desplegable con elementos fijos marcados en la macro? Espero puedas contestar, saludos desde México
Otra cosa buena sería que si una opción de la lista deplegable solo tiene una opción elegible, entonces la muestre directo sin tener que elegirla. Supongamos que en la lista países tenemos el Vaticano y su única ciudad es la propia ciudad del Vaticano se ahorraría tiempo si al elegir el estado del vaticano solo apareciera la ciudad a su derecha.- En otros tipos de ejemplos pueden darse mas opciones con una única opción.
Hola! Primero que nada gracias por el video, es lo que estaba buscando. Solo que tengo un problema con indexOf ("TypeError: Cannot read property 'indexOf' of undefined") Alguien sabe cuál es el problema? Gracias!
Hola! Normalmente ese error se debe a que el arreglo al que le estas haciendo IndexOf no existe Intenta con Logger.log(paises[0]) a ver que te muestra Me cuentas Saludos!
@@JuanSGuzman Pude solucionarlo, Gracias! Ahora el problema que tengo es que no me aparece la lista desplegable al lado de la lista condicional :( Qué tipo de problema puede ser? Porque recibe la última parte de la macro donde realizas esto y la tengo igual. Probé con un logger.log en las variantes del inicio y me sale "Información" sin importar la celda donde me encuentre, no sé si allí esté el problema. Desde ya, muchísimas gracias Juan