Dans Google Spreadshets, comment pouvez-vous parcourir toutes les feuilles disponibles sans connaître le nombre total?

10

Je garde les statistiques de l'équipe de baseball de ma fille. J'ai une feuille pour chaque jeu, chacune de structure identique. Je veux créer une feuille récapitulative qui totalise les nombres des autres feuilles. Comment dois-je construire les formules pour référencer N nombre de feuilles?

Exemple:

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

Je ne veux pas revenir en arrière et modifier chaque formule lorsqu'une nouvelle feuille est ajoutée.

Mise à jour: En recherchant plus dans l'aide de Google, je ne pense pas que cela soit pris en charge. Ce que je fais est appelé une plage 3D et bien qu'il soit pris en charge dans Excel, il n'est pas pris en charge dans Google Spreadsheet.

Jacob Jan Tuinstra
la source
1
Ce Q&A que j'ai donné, pourrait également être intéressant: webapps.stackexchange.com/a/42960/29140
Jacob Jan Tuinstra

Réponses:

18

Si cela ne vous dérange pas d'utiliser une macro, vous pouvez procéder comme suit. Ajoutez ce script à votre feuille de calcul (Outils -> Scripts -> Éditeur de 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;
}

et utilisez la formule = getTotalSum ("A1") , où "A1" est la cellule que vous souhaitez résumer dans toutes les feuilles (sauf celle dans laquelle vous mettez la formule).

J'ai créé un script de test que vous pouvez consulter: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=en&authkey=CPyZqxk

David
la source
C'est exactement ce que je recherche, mais chaque fois que le script s'exécute, il ajoute à la valeur qui se trouve actuellement dans la cellule, donc j'obtiens plus que la somme des feuilles de la cellule à chaque exécution. Comment puis-je faire supprimer / remplacer la valeur actuelle et simplement ajouter la somme des autres feuilles?
Keith
Utilisez-vous la même position de cellule pour faire le résumé? Si c'est le cas, cela ajoute probablement cela au total. Et puis lorsque vous l'exécutez à nouveau, il ajoute la nouvelle somme à l'ancienne somme, etc. etc. Si vous le mettez simplement dans une autre cellule, cela devrait fonctionner. Si vous préférez ne pas le faire, vous devrez modifier le script pour obtenir l'id de la feuille actuelle, puis ajouter une vérification à l'instruction if afin qu'elle ne l'inclue pas. Ajoutez d'abord la boucle ci-dessus: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();modifiez ensuite la déclaration if comme if (typeof(val) == 'number') && (i != thissheet)
suit
Oups, mauvaise syntaxe sur l'instruction if. Utilisez ceci:if (typeof(val) == 'number' && i != thissheet)
goodship11
1
Si les valeurs des autres cellules changent, la valeur renvoyée n'est pas mise à jour car une fonction personnalisée s'exécute uniquement lorsque ses paramètres changent.
Rubén