Wie können Sie in Google Spreadshets alle verfügbaren Blätter durchlaufen, ohne die Gesamtzahl zu kennen?

10

Ich behalte Statistiken für die Baseballmannschaft meiner Tochter. Ich habe für jedes Spiel ein Blatt, jedes in seiner Struktur identisch. Ich möchte ein Zusammenfassungsblatt erstellen, das die Zahlen der anderen Blätter zusammenfasst. Wie soll ich die Formeln so konstruieren, dass sie auf N Blattzahlen verweisen?

Beispiel:

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

Ich möchte nicht zurückgehen und jede Formel ändern, wenn ein neues Blatt hinzugefügt wird.

Update: Wenn Sie in der Google-Hilfe noch mehr suchen, wird dies meiner Meinung nach nicht unterstützt. Was ich mache, wird als 3D-Bereich bezeichnet und obwohl es in Excel unterstützt wird, wird es in Google Spreadsheet nicht unterstützt.

Jacob Jan Tuinstra
quelle
1
Diese Fragen und Antworten
Jacob Jan Tuinstra

Antworten:

18

Wenn es Ihnen nichts ausmacht, ein Makro zu verwenden, können Sie Folgendes tun. Fügen Sie dieses Skript Ihrer Tabelle hinzu (Extras -> Skripte -> Skripteditor):

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;
}

und verwenden Sie die Formel = getTotalSum ("A1") , wobei "A1" die Zelle ist, die Sie in allen Blättern zusammenfassen möchten (mit Ausnahme derjenigen, in die Sie die Formel einfügen ).

Ich habe ein Testskript erstellt, das Sie sich ansehen können: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=de&authkey=CPyZqxk

David
quelle
Dies ist genau das, wonach ich suche, aber jedes Mal, wenn das Skript ausgeführt wird, erhöht es den Wert, der sich derzeit in der Zelle befindet, sodass ich bei jeder Ausführung mehr als die Summe der Blätter in der Zelle erhalte. Wie kann ich den aktuellen Wert löschen / ersetzen und einfach die Summe der anderen Blätter addieren?
Keith
Verwenden Sie dieselbe Zellenposition, um die Zusammenfassung zu erstellen? Wenn ja, dann addiert es das wahrscheinlich zur Gesamtsumme. Und wenn Sie es dann erneut ausführen, addiert es die neue Summe zur alten Summe usw. usw. Wenn Sie es einfach in eine andere Zelle legen, sollte es funktionieren. Wenn Sie dies nicht möchten, müssen Sie das Skript ändern, um die ID des aktuellen Arbeitsblatts abzurufen, und dann der if-Anweisung ein Häkchen hinzufügen, damit es das nicht enthält. Zuerst oben für Schleife hinzufügen: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();Dann zweitens die if-Anweisung wie if (typeof(val) == 'number') && (i != thissheet)
folgt
Hoppla, falsche Syntax für die if-Anweisung. Verwenden Sie diese:if (typeof(val) == 'number' && i != thissheet)
goodship11
1
Wenn sich die Werte der anderen Zellen ändern, wird der zurückgegebene Wert nicht aktualisiert, da eine benutzerdefinierte Funktion nur ausgeführt wird, wenn sich ihre Parameter ändern.
Rubén
0

Wenn jemand auf diese Frage stößt und das gleiche Problem hat, gibt es ein 3D-Referenz-Add-On für Google Sheets, mit dem Sie Bereiche über mehrere Blätter definieren können und das mit nativen Funktionen wie = SUM () verwendet werden kann.

Einige Erklärungen auf der Autorenseite

Hein
quelle