ฉันได้พบวิธีในการทำเช่นนี้โดยใช้ฟังก์ชันการเขียนสคริปต์ที่ Google Spreadsheet มีให้
นี่คือวิธีการ:
- เปิดสเปรดชีตของคุณ
- ในเมนูไปที่เครื่องมือ -> ตัวแก้ไขสคริปต์ ... ; นี่จะเป็นการเปิดหน้าต่างใหม่ที่ให้คุณใส่รหัสได้
- คัดลอกรหัสด้านล่าง
- วางรหัสในหน้าต่างตัวแก้ไขสคริปต์และกดCTRL+ 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;
}
หลังจากทำตามขั้นตอนข้างต้นคุณมีสามฟังก์ชันเพิ่มเติมในสเปรดชีต:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
โปรดทราบว่า<range specification>
และ<cell specification>
จะแสดงในA1สัญกรณ์และต้องอยู่ในคำพูด
ตัวอย่างเช่นในการรับจำนวนเซลล์ทั้งหมดในช่วง B2: F13 ที่มีการตั้งค่าสีพื้นหลังเป็นสีขาวคุณควรป้อนสูตรต่อไปนี้:
=countCellsWithBackgroundColor("white", "B2:F13")
และเพื่อคำนวณผลรวมของเซลล์เดียวกันให้ใช้สูตร:
=sumWhereBackgroundColorIs("white", "B2:F13")
เซลล์บางคนอาจไม่ได้มีชุดพื้นหลังสีเช่น 'สีขาว', 'สีเทา' แต่สี RGB #6fa8dc
เช่น คุณไม่สามารถเดาได้ว่าสีคืออะไรดังนั้นหากคุณต้องการค้นหาสีของเซลล์ (เช่นB9
) คุณควรป้อนสูตรนี้ในเซลล์:
=getBackgroundColor("B9")
และหลังจากนั้นใช้ค่านี้เป็นพารามิเตอร์ของทั้งสองฟังก์ชั่นด้านบน
ปรากฏว่าถ้าสีพื้นหลังของเซลล์เป็น "ชุดรูปแบบสี" ผลตอบแทนที่ไม่ถูกต้องเสมอgetBackground()
#ffffff
ฉันไม่พบวิธีอื่นนอกเหนือจากการใช้สีจากชุดมาตรฐาน
ให้สังเกตเครื่องหมายคำพูดในตัวอย่างข้างต้นทั้งหมดอีกครั้ง หากไม่มีพวกเขาสูตรจะไม่ทำงาน