In Google Spreadshets, come puoi scorrere tutti i fogli disponibili senza conoscere il conteggio totale?


10

Sto mantenendo le statistiche per la squadra di baseball di mia figlia. Ho un foglio per ogni gioco, ognuno identico nella struttura. Voglio creare un foglio di riepilogo che somma i numeri degli altri fogli. Come devo costruire le formule per fare riferimento a N numero di fogli?

Esempio:

=G1!C2+G2!C2+G3!C2

Non voglio tornare indietro e cambiare ogni formula quando viene aggiunto un nuovo foglio.

Aggiornamento: eseguendo una ricerca più approfondita nella Guida di Google, non credo che questo sia supportato. Quello che sto facendo viene definito intervallo 3D e sebbene sia supportato in Excel, non è supportato in Google Spreadsheet.


1
Le domande e le risposte che
Jacob Jan Tuinstra,

Risposte:


18

Se non ti dispiace usare una macro, puoi fare quanto segue. Aggiungi questo script al tuo foglio di calcolo (Strumenti -> Script -> Editor di script):

function getTotalSum(cell) {
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
    var sum = 0;
    for (var i = 0; i < sheets.length ; i++ ) {
        var sheet = sheets[i];
        var val = sheet.getRange(cell).getValue();

        if (typeof(val) == 'number') {
            sum += val;   
        }       
    }

    return sum;
}

e usa la formula = getTotalSum ("A1") , dove "A1" è la cella che vuoi riassumere in tutti i fogli (tranne quello in cui stai inserendo la formula).

Ho realizzato uno script di prova che puoi dare un'occhiata a: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=en&authkey=CPyZqxk


Questo è esattamente quello che sto cercando, ma ogni volta che lo script viene eseguito si aggiunge al valore che è attualmente nella cella, quindi ottengo più della somma dei fogli nella cella ogni volta che viene eseguito. Come posso farlo cancellare / sostituire il valore corrente e aggiungere semplicemente la somma degli altri fogli?
Keith,

Stai usando la stessa posizione della cella per fare il riepilogo? Se è così, probabilmente lo sta aggiungendo al totale. E poi quando lo esegui di nuovo, aggiunge la nuova somma alla vecchia somma, ecc. Ecc. Se la metti in un'altra cella, dovrebbe funzionare. Se preferisci non farlo, dovrai modificare lo script per ottenere l'id del foglio corrente, quindi aggiungere un segno di spunta all'istruzione if in modo che non lo includa. Per prima cosa aggiungi sopra per il ciclo: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();poi cambia l'istruzione if in questo modo:if (typeof(val) == 'number') && (i != thissheet)
goodship11

Spiacenti, sintassi errata sull'istruzione if. Usa questo:if (typeof(val) == 'number' && i != thissheet)
goodship11

1
Se i valori delle altre celle cambiano, il valore restituito non viene aggiornato perché una funzione personalizzata viene eseguita solo quando i suoi parametri cambiano.
Rubén,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.