Як можна переглядати всі наявні аркуші в електронних таблицях Google, не знаючи загальної кількості?


10

Я веду статистику для бейсбольної команди моєї дочки. У мене є аркуш для кожної гри, кожен однаковий за структурою. Я хочу створити підсумковий аркуш, який підсумовує числа з інших аркушів. Як я повинен побудувати формули для позначення N кількості аркушів?

Приклад:

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

Я не хочу повертатися назад і змінювати кожну формулу, коли додається новий аркуш.

Оновлення: Пошук ще в довідці Google, я не думаю, що це підтримується. Те, що я роблю, називається 3D-діапазоном, і хоча воно підтримується в Excel, воно не підтримується в Google Spreadsheet.


1
Це питання та відповіді, які я дав, також можуть зацікавити: webapps.stackexchange.com/a/42960/29140
Якоб Ян

Відповіді:


18

Якщо ви не заперечуєте проти використання макросу, ви можете зробити наступне. Додайте цей скрипт у свою електронну таблицю (Інструменти -> Сценарії -> Редактор сценаріїв):

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

і скористайтеся формулою = getTotalSum ("A1") , де "A1" - клітина, яку ви хочете підсумувати у всіх аркушах (крім тієї, в яку ви вводите формулу).

Я зробив тестовий сценарій, який ви можете подивитися: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=uk&authkey=CPyZqxk


Це саме те, що я шукаю, але щоразу, коли сценарій запускається, він додає значення, яке зараз знаходиться в комірці, тому я отримую більше, ніж сума аркушів у комірці кожного разу, коли вона запускається. Як я можу змусити його видалити / замінити поточне значення та просто додати суму інших аркушів?
Кіт

Чи використовуєте ви ту саму позицію комірки, щоб робити підсумки? Якщо так, то, ймовірно, це додасть до загального. А потім, коли ви запускаєте її знову, вона додає нову суму до старої суми тощо тощо. Якщо ви просто помістите її в іншу клітинку, вона повинна працювати. Якщо ви не хочете цього робити, вам потрібно буде змінити сценарій, щоб отримати ідентифікатор поточного аркуша, а потім додати чек до заяви if, щоб він не включав це. Перше додайте вище для циклу: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();потім друге, змініть оператор if таким чином:if (typeof(val) == 'number') && (i != thissheet)
goodship11

На жаль, неправильний синтаксис у операторі if. Використовуйте це:if (typeof(val) == 'number' && i != thissheet)
goodship11,

1
Якщо значення інших комірок змінюються, повернене значення не оновлюється, оскільки спеціальна функція працює лише тоді, коли її параметри змінюються.
Рубен

0

Якщо хтось натрапляє на це запитання і має ту саму проблему, існує надбудова 3D-довідника для таблиць Google, яка дозволяє визначати діапазони через декілька аркушів і може використовуватися з нативними функціями типу = SUM ()

Деякі пояснення на сторінці авторів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.