Tổng dữ liệu dựa trên màu ô trong Bảng tính Google


14

Tôi đã thấy câu hỏi này và mặc dù tôi phải đối mặt với cùng một vấn đề, câu trả lời cho câu hỏi đó không hữu ích cho trường hợp của tôi.

Tôi có bảng tính lớn được thay đổi thường xuyên. Vì vậy, theo giải pháp được chấp nhận cho câu hỏi đó, thật khó để sao chép tất cả các cột dân cư và thật khó để chỉnh sửa thêm một ô mỗi khi tôi muốn thay đổi màu nền của ô.

Không có cách nào để tính tổng dữ liệu dựa trên một điều kiện liên quan đến màu nền của ô trong Bảng tính Google?

Câu trả lời:


14

Xin vui lòng xem nếu câu trả lời của tôi cho một câu hỏi tương tự giúp.

Cập nhật:

Nội dung gửi của tôi cho thư viện Google Docs Script đã được chấp nhận và bạn có thể cài đặt nó để có được chức năng bạn muốn.

Các bước:

  • Mở bảng tính của bạn
  • Trong menu đi đến Công cụ -> Thư viện tập lệnh ...
  • Tìm kiếm Sum theo màu
  • Nhấp vào Cài đặt
  • Nhấp vào nút Ủy quyền nếu bạn tin tưởng vào tập lệnh và sau đó Đóng
  • quay lại bảng tính

Bây giờ bạn có ba hàm bổ sung bạn có thể sử dụng trong công thức bảng tính của mình:

  • sumWhereBackgroundColorIs(color, rangeSpecification)
  • sumWhereBackgroundColorIsNot(color, rangeSpecification)
  • getBackgroundColor(rangeSpecification)

Xin vui lòng từ đó các rangeSpecificationtham số yêu cầu dấu ngoặc kép ( ") xung quanh chúng.

Ví dụ:

=sumWhereBackgroundColorIs("white", "A1:C4")

tính tổng các giá trị của tất cả các ô trong phạm vi A1: C4 có nền trắng.

Xin lưu ý rằng nếu bạn không biết màu của một ô nhất định, bạn có thể sử dụng getBackgroundColorhàm được cung cấp để tìm hiểu màu đó là gì. Chức năng này là cần thiết, vì một số màu được thể hiện dưới dạng mã RGB (ví dụ #00ff00thay vì green).


2
Sự getBackgroundColor()phản đối Có lẽ bạn có thể cập nhật mã?
Jacob Jan Tuinstra

2
@JacobJanTuinstra Tôi đã cập nhật mã, nhưng phải mất một thời gian để Google xem lại bài đăng của tôi. Trong thời gian này, bạn có thể sử dụng mã này
Cristian Lupascu

2
@domen có, có: github.com/clupascu/GoogleApps_SumByColor/blob/master/ ,. Không phải là một giải pháp rất đẹp, nhưng nó hoạt động.
Cristian Lupascu

2
Bộ sưu tập kịch bản đã được thay thế bởi các tiện ích bổ sung. Tôi không thể tìm thấy "tổng theo màu" trong phần bổ trợ. Bạn có phải gửi tập lệnh của mình tới các tiện ích bổ sung để nó có sẵn ở đó không?
Jeff Lockhart

3
@ w0lf Các bảng tính mới của Google dường như không còn hỗ trợ thư viện tập lệnh. Nó chuyển hướng với một thông báo đến các tiện ích mới. Trình chỉnh sửa tập lệnh vẫn có sẵn và tôi đã sử dụng mã của bạn ở đó. Tôi đã tạo một ngã ba và thêm hỗ trợ để bỏ qua các ô trống (không phải là số) trong tổng (nếu không xảy ra lỗi nếu các ô trống tồn tại trong phạm vi): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart

2

Đây là cách tôi làm cho nó hoạt động:

  1. Mở Tools>Script Editor

  2. Dán mã bên dưới, lưu tập lệnh

  3. Quay trở lại bảng tính của bạn. Sử dụng với =countColoredCells(A1:Z5,C5)vị trí C5của ô có màu cần đếm.

Mã số:

/**
* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
* @return {number}
* @customfunction
*/

function countColoredCells(countRange,colorRef) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formula = activeRange.getFormula();

  var rangeA1Notation = formula.match(/\((.*)\,/).pop().trim();
  var range = activeSheet.getRange(rangeA1Notation);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var colorCellA1Notation = formula.match(/\,(.*)\)/).pop().trim();
  var colorCell = activeSheet.getRange(colorCellA1Notation);
  var color = colorCell.getBackground();

  var count = 0;

  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color )
        count=count+1;
  return count;
};

Tín dụng mã (đã thay đổi): http://igoogledrive.blogspot.lt/2015/11/google-s lâysheet-count-of-colored.html


Tôi không nhận được phạm vi lỗi Không tìm thấy ???? : ((
Kegham K.

tôi đang nhậnTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino
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.