es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando dividir un array de salida de una consulta de Google Sheets en la primera mitad y la segunda mitad.

Tengo la necesidad de generar una función QUERY en hojas de cálculo de Google en dos partes, cada parte en una hoja diferente (estas se exportan a otro software). Necesito preservar el orden original, que está preparado en una tercera hoja que es la fuente de los datos para la consulta. Esta preservación del orden es la parte en la que estoy atascado, además mi solución actual, que funciona en su mayoría, es bastante complicada, me encantaría simplificarla.

Esto es lo que tengo:

Fórmula para la primera mitad (conserva el orden original)

=SORTN(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0),CEILING(ROWS(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0))/2))

Fórmula para la segunda mitad (reordena y pierde el orden original, y llama a la consulta 7 veces para completar el trabajo)

=sortn(SORTN(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0),FLOOR(ROWS(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0))/2),0,index(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0),0,1),false),ROWS(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0)),0,index(SORTN(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0),FLOOR(ROWS(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0))/2),0,index(QUERY(mainList!A3:U946,"SELECT T,U WHERE A!='' and P!=''",0),0,1),false),0,1),true)

Estoy usando ROWS() para contar la longitud de la consulta, FLOOR(ROWS()/2) y CEILING(ROWS()/2) para obtener el número correcto de resultados independientemente de si la longitud de la consulta es par o impar. La fórmula para la segunda mitad la ejecuta a través de SORTN() dos veces, pero eso es parte del problema, ya que me está obligando (creo) a ordenar basándome en una de las columnas y no simplemente invertir el orden sin ordenar nuevamente (no puedo ordenar porque el software colocará x-17 por encima de x-6, y mi tercera hoja de datos ‘source’ ya ha solucionado ese problema de ordenamiento). Siento que debería haber una forma de hacer esto sin tener que llamar a QUERY siete veces para completar el trabajo para la fórmula de la segunda mitad. ¿Hay algún mago por ahí? ¡Gracias de antemano!

Enlace a la hoja de cálculo: enlace a la hoja de cálculo

Los datos provienen de ‘mainList’ y las consultas divididas se encuentran en ‘EV1’ y ‘EV2’.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener una función QUERY de Google Sheets en dos mitades, cada una en una hoja diferente pero manteniendo el orden original, puedes seguir estos pasos:

    1. Crea dos hojas nuevas (por ejemplo, EV1 y EV2) donde desees mostrar las consultas divididas.
    2. En la celda A1 de ambas hojas, copia los encabezados de la hoja “mainList”.

    3. En la celda A2 de la hoja EV1, utiliza esta fórmula:

      =SORTN(mainList!A3:U,CEILING(ROWS(mainList!A3:U)/2),0,A1,false)
      

      Esto devolverá la primera mitad de la consulta utilizando la función SORTN para preservar el orden original basado en la columna A.

    4. En la celda A2 de la hoja EV2, utiliza esta fórmula:

      =SORTN(mainList!A3:U,CEILING(ROWS(mainList!A3:U)/2),0,A1,true)
      

      Esto devolverá la segunda mitad de la consulta utilizando la función SORTN para invertir el orden original basado en la columna A.

    5. Ahora tienes dos hojas con las consultas divididas, cada una manteniendo el orden original. Puedes exportarlas a cualquier otro software que desees.

    Nota: Si tu hoja “mainList” tiene un número impar de filas, las fórmulas anteriores pueden no dividir los datos en mitades perfectas. Es posible que debas ajustar la función CEILING en la hoja EV1 para obtener la división deseada.

Comments are closed.