Alternativa all'utilizzo di ARRAYFORMULA con QUERY o INDEX

Sep 11 2020

Spiegazione più mirata:

Questo è il foglio di calcolo https://docs.google.com/spreadsheets/d/1eMlf9QrI59mdOlUzQSzQherSXxcMbJq9iSyHIxKNaRM/edit?usp=sharing

Sul foglio "6-7 Master 2020-21" nella colonna ES, ogni riga deve avere un valore che proviene dal foglio "SummaryCitizenship". Questo valore è nella colonna E del foglio "SummaryCitizenship". La riga nel foglio "SummaryCitizenship" da cui proviene il valore deve corrispondere ai seguenti valori La colonna B ("SummaryCitizenship") di quella riga corrisponde alla colonna B ("6-7 Master 2020-21") AND Column C = 1 AND Column D = Responsabilità personale

Potrei inserire questa formula in ogni cella della colonna ES ("6-7 Master 2020-21")

=QUERY(SummaryCitizenship!A1:E12,"select E where B = '"&B2&"' and C = 1 and D = 'Personal Responsibility' ",0)

e funziona, ma le informazioni nella colonna B ("6-7 Master 2020-21") sono dinamiche e cambieranno più volte al giorno, per lo più aggiungendo nuove righe al foglio. Ciò significa che ho bisogno che la formula non si trovi in ​​ogni cella in ES, ma piuttosto nella cella ES1 o ES2 e influisca sul resto del foglio come farebbe un ARRAYFORMULA.

Ho anche provato

=INDEX(FILTER(SummaryCitizenship!$A$2:$E,SummaryCitizenship!$B$2:$B=B1,SummaryCitizenship!$C$2:$C=1,SummaryCitizenship!$D$2:$D="Personal Responsibility"),0,5) 

Quella formula funzionerà anche se inserita in ogni cella di ES, ma non funziona con un ARRAYFORMULA

Vecchia domanda che spiega in modo più dettagliato:

Devo controllare i valori in "SummaryCitizenship!" foglio contro 3 condizioni e restituisce il valore di una colonna da quel confronto. Posso farlo in 2 modi in ogni cella; uno utilizzando il filtro e l'indice e un altro utilizzando la query. Sfortunatamente, il numero di righe in "6-7 Master 2020-21!" il foglio cambia costantemente, quindi non posso semplicemente incollare la formula in ogni cella. Quel foglio ha più di 1700 righe e probabilmente ne avrà quasi 3000 prima della fine dell'anno scolastico. Inoltre, non so quando viene aggiunta una nuova riga, quindi non posso semplicemente inserire e aggiungere la formula quando necessario. Ho davvero bisogno di qualcosa che funzioni dal riferimento cellulare ES2 o ES1.

Ecco le formule che funzionano se incollate in ogni cella:

=INDEX(FILTER(SummaryCitizenship!$A$2:$E,SummaryCitizenship!$B$2:$B=B1,SummaryCitizenship!$C$2:$C=1,SummaryCitizenship!$D$2:$D="Personal Responsibility"),0,5)
=QUERY(SummaryCitizenship!A1:E12,"select E where B = '"&B2&"' and C = 1 and D = 'Personal Responsibility' ",0)

Se solo potessi far funzionare uno di questi con arrayFormula, verrei impostato. Purtroppo, non lo fanno.

Nello pseudo codice, ciò di cui ho bisogno è: se l'ID univoco dello studente (colonna B "6-7 Master 2020-21") corrisponde all'ID univoco sul foglio "SummaryCitizenship" colonna B e la colonna "SummaryCitizenship" trimestre C è 1 e la colonna D dello standard PRIDE "SummaryCitizenship" è "Responsabilità personale", restituire la colonna C della somma del valore di adeguamento punti "SummaryCitizenship" nella colonna ES di "6-7 Master 2020-21". Fallo per tutte le righe di "6-7 Master 2020-21!" colonna ES preferibilmente con una voce di funzione in ES1 o ES2.

Non so molto di GAS, ma posso farci un po '. Se hai una soluzione che include GAS, ti sarei grato anche per questo.

Risposte

2 Calculuswhiz Sep 11 2020 at 00:57

Corretto, INDEX()non funziona con ArrayFormula, ma possiamo usare Vlookup per aggirare questo problema .

Questo dovrebbe darti quello che vuoi:

=ArrayFormula(IFNA(VLOOKUP(B2:B,FILTER(SummaryCitizenship!B2:E,SummaryCitizenship!C2:C=1,SummaryCitizenship!D2:D="Personal Responsibility"),4,0)))

(Non dimenticare di cancellare la tua colonna!)

Versione contrassegnata:

=ArrayFormula(
    IFNA(                           // Blank if NA
        VLOOKUP(
            B2:B,                   // Unique ID lookup
            FILTER(                 // Gives us the filter conditions on other table
                SummaryCitizenship!B2:E,    // Key column for VLOOKUP is B
                SummaryCitizenship!C2:C=1,
                SummaryCitizenship!D2:D="Personal Responsibility"
            ),
            4,                      // Index to column 4
            0                       // Exact match
        )
    )
)