sheets sheet query importrange google funcion ejemplos buscarv google-spreadsheet google-form

google-spreadsheet - importrange - query contains google sheets



= Sintaxis QUERY al trabajar con datos enviados a través de Google Form (2)

La consulta siguiente ''funciona'' línea por línea (cuando se rellena manualmente), pero no se ''autocompleta'' cuando se agregan nuevos datos a la ''hoja de respuestas''. Los datos que se agregan a la "hoja de respuestas" provienen de un formulario de Google.

=QUERY(Sheet2!$A$1:K; CONCATENATE("SELECT B, C WHERE A = ", responses!B1), 0)

Pregunta
Uno - ¿Cómo ajusto esta consulta para que se ''autocomplete'' cuando se agreguen nuevos datos a la ''hoja de respuestas'' mediante un formulario de Google?

Si esto no es posible, ¿alguna sugerencia?

Aquí hay un enlace a la hoja de cálculo de Google con la que estoy trabajando

Gracias por su tiempo y asistencia,
Todd
Profesor de instituto


Una forma de evitarlo es usar Google App Script (GAS) .

Lo que es posible es configurar una función onEdit que agregará la fórmula a la celda requerida cuando se agreguen nuevos datos.

Usando un código muy rápido (abajo). Esto aplicará su fórmula cuando la hoja de cálculo se actualice.

function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ws = ss.getSheetByName("responses"); var lastRow = ws.getLastRow(); var studentID = ws.getRange(lastRow, 4).setFormula(''=QUERY(Sheet2!$A$1:K; CONCATENATE("SELECT B, C WHERE A = ", responses!B''+lastRow+''), 0)''); }

Copié tu hoja de cálculo y la configuré aquí -> ENLACE Puedes probarla simplemente copiando una nueva identificación de estudiante en la columna B y verás que la información del estudiante se extrae de la segunda hoja.


Otra opción es usar VLOOKUP aplicado como una fórmula de matriz . Esto se rellenará automáticamente en la columna a medida que se envíen los formularios. Entonces en la fila 2:

=ArrayFormula(IFERROR(VLOOKUP(B2:B;Sheet2!A2:C;SIGN(ROW(B2:B))*{2,3};0)))

o puede ingresar esto en la fila 1, que también rellenará los encabezados, y es un poco más estanco cuando las filas se insertan / eliminan en ciertas situaciones:

=ArrayFormula(IF(ROW(A:A)=1;{"First Name","Last Name"};IFERROR(VLOOKUP(B:B;Sheet2!A2:C;SIGN(ROW(B:B))*{2,3};0))))