Tôi đã tìm thấy một cách để làm điều này, bằng cách sử dụng chức năng tạo kịch bản mà Bảng tính Google cung cấp.
Đây là cách thực hiện:
- mở bảng tính của bạn
- trong menu, đi tới Công cụ -> Trình chỉnh sửa tập lệnh ...; Điều này sẽ mở một cửa sổ mới cho phép bạn nhập mã
- sao chép mã dưới đây
- dán mã vào cửa sổ Script Editor và nhấn CTRL+ Sđể lưu nó
- đóng các cửa sổ soạn thảo Script và quay lại bảng tính
Mã số:
function getBackgroundColor(rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(rangeSpecification);
return cell.getBackground();
}
function sumWhereBackgroundColorIs(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x += parseFloat(cell.getValue());
}
}
return x;
}
function countCellsWithBackgroundColor(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x++;
}
}
return x;
}
Sau khi làm theo các bước trên, bạn có thêm ba chức năng có sẵn trong bảng tính:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
Xin lưu ý rằng <range specification>
và <cell specification>
được thể hiện trong ký hiệu A1 , và phải được đặt trong dấu ngoặc kép .
Ví dụ: để lấy số lượng của tất cả các ô trong phạm vi B2: F13 có màu nền được đặt thành màu trắng , bạn nên nhập công thức sau:
=countCellsWithBackgroundColor("white", "B2:F13")
và để tính tổng của các ô giống nhau, hãy sử dụng công thức:
=sumWhereBackgroundColorIs("white", "B2:F13")
Một số ô có thể không có nền được đặt thành một màu như 'trắng', 'xám', nhưng màu như RGB #6fa8dc
. Bạn không thể đoán màu sắc là gì, vì vậy nếu bạn muốn tìm ra màu cho một ô (ví dụ B9
:), bạn nên nhập công thức này vào một ô:
=getBackgroundColor("B9")
và sau đó sử dụng giá trị này làm tham số cho hai hàm trên.
Có vẻ như nếu màu nền của một ô là "màu chủ đề", getBackground()
luôn luôn trả về không chính xác #ffffff
. Tôi không tìm thấy cách nào khác ngoài việc sử dụng màu từ bộ tiêu chuẩn.
Một lần nữa, lưu ý các trích dẫn trong tất cả các ví dụ trên; không có chúng, các công thức sẽ không hoạt động.