Di Google Spreadshets, bagaimana Anda bisa mengulang semua lembar yang tersedia tanpa mengetahui jumlah total?


10

Saya menyimpan statistik untuk tim bisbol putri saya. Saya memiliki selembar untuk setiap permainan, masing-masing identik dalam struktur. Saya ingin membuat lembar ringkasan yang total angka dari lembar lainnya. Bagaimana saya harus membuat rumus untuk referensi N jumlah lembar?

Contoh:

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

Saya tidak ingin kembali dan mengubah setiap rumus saat lembar baru ditambahkan.

Pembaruan: Mencari lebih banyak di Google Help, saya rasa ini tidak didukung. Apa yang saya lakukan disebut sebagai rentang 3D dan meskipun didukung di Excel, itu tidak didukung di Google Spreadsheet.


1
Q & A ini saya berikan, mungkin menarik juga: webapps.stackexchange.com/a/42960/29140
Jacob Jan Tuinstra

Jawaban:


18

Jika Anda tidak keberatan menggunakan makro, Anda dapat melakukan hal berikut. Tambahkan skrip ini ke spreadsheet Anda (Alat -> Skrip -> Editor skrip):

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

dan gunakan rumus = getTotalSum ("A1") , di mana "A1" adalah sel yang ingin Anda simpulkan di semua lembar (kecuali yang Anda masukkan rumusnya).

Saya membuat skrip pengujian yang dapat Anda lihat di: https://spreadsheets.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=id&authkey=CPyZqxk


Ini persis apa yang saya cari, tetapi setiap kali skrip berjalan menambahkan nilai yang saat ini ada di dalam sel, jadi saya mendapatkan lebih dari jumlah lembar di sel setiap kali dijalankan. Bagaimana cara saya membuatnya menghapus / mengganti nilai saat ini dan hanya menambahkan jumlah lembar lain?
Keith

Apakah Anda menggunakan posisi sel yang sama untuk melakukan ringkasan? Jika demikian maka mungkin menambahkannya ke total. Dan kemudian ketika Anda menjalankannya lagi, ia menambahkan jumlah baru ke jumlah yang lama, dll. Jika Anda hanya memasukkannya ke sel lain, ia akan berfungsi. Jika Anda memilih untuk tidak melakukannya, Anda perlu mengubah skrip untuk mendapatkan id dari sheet saat ini, dan kemudian menambahkan tanda centang pada pernyataan if sehingga tidak termasuk itu. Pertama tambahkan di atas untuk loop: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();Kemudian kedua ubah pernyataan if seperti:if (typeof(val) == 'number') && (i != thissheet)
goodship11

Ups, sintaks yang salah pada pernyataan if. Gunakan ini:if (typeof(val) == 'number' && i != thissheet)
goodship11

1
Jika nilai sel lain berubah, nilai yang dikembalikan tidak diperbarui karena fungsi kustom hanya berjalan ketika parameternya berubah.
Rubén

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.