Trong Google Spreadshets, làm thế nào bạn có thể lặp qua tất cả các trang tính có sẵn mà không biết tổng số?


10

Tôi đang giữ số liệu thống kê cho đội bóng chày của con gái tôi. Tôi có một tờ cho mỗi trò chơi, mỗi một cấu trúc giống hệt nhau. Tôi muốn tạo một bảng tóm tắt tổng số từ các trang khác. Tôi nên xây dựng các công thức để tham chiếu N số tờ như thế nào?

Thí dụ:

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

Tôi không muốn quay lại và thay đổi từng công thức khi một tờ mới được thêm vào.

Cập nhật: Tìm kiếm thêm một số thông tin tại Google Help, tôi không nghĩ rằng điều này được hỗ trợ. Những gì tôi đang làm được gọi là phạm vi 3D và mặc dù nó được hỗ trợ trong Excel, nhưng nó không được hỗ trợ trong Bảng tính Google.


1
Câu hỏi và trả lời này tôi cũng đã quan tâm: webapps.stackexchange.com/a/42960/29140
Jacob Jan Tuinstra

Câu trả lời:


18

Nếu bạn không phiền khi sử dụng macro, bạn có thể làm như sau. Thêm tập lệnh này vào bảng tính của bạn (Công cụ -> Tập lệnh -> Trình chỉnh sửa tập lệnh):

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

và sử dụng công thức = getTotalSum ("A1") , trong đó "A1" là ô mà bạn muốn tổng hợp trong tất cả các trang tính (ngoại trừ trang bạn đưa công thức vào).

Tôi đã tạo một tập lệnh thử nghiệm mà bạn có thể xem tại: https : //s trànsheet.google.com/ccc?key=0Ao3E95ou1MgbdG45blRvWlVaYkxFY01PQUhvZkZQcEE&hl=vi&authkey=CPyZqk


Đây chính xác là những gì tôi đang tìm kiếm, nhưng mỗi lần tập lệnh chạy nó sẽ thêm vào giá trị hiện có trong ô, vì vậy tôi nhận được nhiều hơn tổng số trang tính trong ô mỗi lần chạy. Làm cách nào tôi có thể xóa / thay thế giá trị hiện tại và chỉ cần thêm tổng của các trang tính khác?
Keith

Bạn đang sử dụng cùng một vị trí ô để làm tóm tắt? Nếu vậy thì có lẽ thêm nó vào tổng số. Và sau đó khi bạn chạy lại nó, nó sẽ thêm tổng mới vào tổng cũ, v.v. Nếu bạn chỉ đặt nó vào một ô khác thì nó sẽ hoạt động. Nếu bạn không muốn, bạn cần thay đổi tập lệnh để lấy id của trang tính hiện tại, sau đó thêm một kiểm tra vào câu lệnh if để nó không bao gồm điều đó. Đầu tiên thêm vòng lặp ở trên cho vòng lặp: var thissheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();Sau đó, lần thứ hai thay đổi câu lệnh if như sau:if (typeof(val) == 'number') && (i != thissheet)
goodship11

Rất tiếc, cú pháp sai trên câu lệnh if. Sử dụng cái này:if (typeof(val) == 'number' && i != thissheet)
goodship11

1
Nếu các giá trị của các ô khác thay đổi, giá trị trả về sẽ không được cập nhật do hàm tùy chỉnh chỉ chạy khi tham số của nó thay đổi.
Rubén

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.