W arkuszach kalkulacyjnych Google, jak możesz przeglądać wszystkie dostępne arkusze, nie znając całkowitej liczby?

10

Trzymam statystyki drużyny baseballowej mojej córki. Mam arkusz dla każdej gry, każdy identyczny w strukturze. Chcę utworzyć arkusz podsumowujący, który sumuje liczby z innych arkuszy. Jak mam konstruować formuły, aby odwoływały się do N liczby arkuszy?

Przykład:

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

Nie chcę wracać i zmieniać każdej formuły po dodaniu nowego arkusza.

Aktualizacja: Przeszukuję więcej w Pomocy Google, nie sądzę, że jest to obsługiwane. To, co robię, jest określane jako zakres 3D i chociaż jest obsługiwane w programie Excel, nie jest obsługiwane w arkuszu kalkulacyjnym Google.

Jacob Jan Tuinstra
źródło
1
To pytanie
Jacob Jan Tuinstra

Odpowiedzi:

18

Jeśli nie masz nic przeciwko użyciu makra, możesz wykonać następujące czynności. Dodaj ten skrypt do arkusza kalkulacyjnego (Narzędzia -> Skrypty -> Edytor skryptów):

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

i użyj formuły = getTotalSum („A1”) , gdzie „A1” to komórka, którą chcesz zsumować we wszystkich arkuszach (oprócz tej, w której wstawiasz formułę).

Zrobiłem skrypt testowy, który możesz obejrzeć: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=pl&authkey=CPyZqxk

David
źródło
Właśnie tego szukam, ale za każdym razem, gdy skrypt jest uruchamiany, dodaje się do wartości, która jest obecnie w komórce, więc za każdym razem dostaję więcej niż sumę arkuszy w komórce. Jak mogę zmusić go do usunięcia / zastąpienia bieżącej wartości i dodania sumy innych arkuszy?
Keith
Czy używasz tej samej pozycji komórki, aby wykonać podsumowanie? Jeśli tak, to prawdopodobnie dodaje to do całości. A następnie, gdy uruchomisz go ponownie, dodaje nową sumę do starej sumy itp. Jeśli po prostu umieścisz ją w innej komórce, powinna działać. Jeśli nie chcesz, musisz zmienić skrypt, aby uzyskać identyfikator bieżącego arkusza, a następnie dodać zaznaczenie do instrukcji if, aby nie zawierało tego. Najpierw dodaj powyżej dla pętli: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();Następnie zmień instrukcję if w następujący sposób:if (typeof(val) == 'number') && (i != thissheet)
goodship11
Ups, zła składnia instrukcji if. Użyj tego:if (typeof(val) == 'number' && i != thissheet)
goodship11
1
Jeśli wartości innych komórek ulegną zmianie, zwrócona wartość nie jest aktualizowana, ponieważ funkcja niestandardowa działa tylko przy zmianie jej parametrów.
Rubén
0

Jeśli ktoś natknie się na to pytanie i ma ten sam problem, istnieje Dodatek 3D Reference dla Arkuszy Google, który pozwala definiować zakresy na wielu arkuszach i może być używany z funkcjami natywnymi, takimi jak = SUM ()

Kilka wyjaśnień na stronie autorów

Hein
źródło