ข้อมูลผลรวมตามสีของเซลล์ใน Google Spreadsheets


14

ฉันได้เห็นคำถามนี้และที่จริงฉันพบปัญหาเดียวกันคำตอบสำหรับคำถามนั้นไม่เป็นประโยชน์กับคดีของฉัน

ฉันมีสเปรดชีตขนาดใหญ่ที่เปลี่ยนบ่อย ดังนั้นตามคำตอบที่ได้รับการยอมรับสำหรับคำถามนั้นมันเป็นเรื่องยากที่จะทำซ้ำคอลัมน์ที่มีประชากรทั้งหมดและมันยุ่งยากในการแก้ไขอีกหนึ่งเซลล์ทุกครั้งที่ฉันต้องการเปลี่ยนแปลงสีพื้นหลังของเซลล์

ไม่มีวิธีรวมข้อมูลตามเงื่อนไขเกี่ยวกับสีพื้นหลังของเซลล์ใน Google Spreadsheets หรือไม่?

คำตอบ:


14

โปรดดูว่าคำตอบของฉันสำหรับคำถามที่คล้ายกันช่วยได้หรือไม่

ปรับปรุง:

การส่งของฉันสำหรับแกลเลอรีสคริปต์ของ Google เอกสารได้รับการยอมรับและคุณสามารถติดตั้งเพื่อรับฟังก์ชั่นที่คุณต้องการ

ขั้นตอน:

  • เปิดสเปรดชีตของคุณ
  • ในเมนูไปที่เครื่องมือ -> แกลเลอรีสคริปต์ ...
  • ค้นหาผลรวมตามสี
  • คลิกติดตั้ง
  • คลิกปุ่มอนุญาตหากคุณเชื่อถือสคริปต์และจากนั้นปิด
  • กลับไปที่สเปรดชีต

ตอนนี้คุณมีสามฟังก์ชันเพิ่มเติมที่คุณสามารถใช้ในสูตรสเปรดชีตของคุณ:

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

กรุณาจากที่rangeSpecificationพารามิเตอร์ต้องมีคำพูด ( ") รอบ ๆ พวกเขา

ตัวอย่างเช่น:

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

ผลรวมของค่าของเซลล์ทั้งหมดในช่วง A1: C4 ที่มีพื้นหลังสีขาว

โปรดทราบว่าหากคุณไม่ทราบสีของเซลล์หนึ่งคุณสามารถใช้getBackgroundColorฟังก์ชั่นที่ให้มาเพื่อค้นหาว่าสีนั้นคืออะไร จำเป็นต้องใช้ฟังก์ชั่นนี้เนื่องจากบางสีจะแสดงเป็นรหัส RGB (ตัวอย่างเช่น#00ff00แทนที่จะเป็นgreen)


2
getBackgroundColor()จะเลิก บางทีคุณสามารถปรับปรุงรหัสได้หรือไม่
Jacob Jan Tuinstra

2
@JacobJanTuinstra ฉันได้อัปเดตรหัสแล้ว แต่ Google ใช้เวลาสักครู่ในการตรวจสอบการส่งของฉัน ในระหว่างนี้คุณสามารถใช้รหัสนี้ได้
Cristian Lupascu

2
@domen ใช่มี: github.com/clupascu/GoogleApps_SumByColor/blob/master/... ไม่ใช่โซลูชันที่สวยมาก แต่ใช้งานได้
Cristian Lupascu

2
แกลเลอรีสคริปต์ถูกแทนที่ด้วยโปรแกรมเสริม ฉันไม่พบ "ผลรวมตามสี" ภายใต้ส่วนเสริม คุณต้องส่งสคริปต์ของคุณไปยังส่วนเสริมเพื่อให้สามารถใช้งานได้ที่นั่นหรือไม่?
Jeff Lockhart

3
@ w0lf สเปรดชีตใหม่ของ Google ดูเหมือนจะไม่สนับสนุนแกลเลอรีสคริปต์อีกต่อไป มันเปลี่ยนเส้นทางพร้อมข้อความไปยังส่วนเสริมใหม่ ตัวแก้ไขสคริปต์ยังคงใช้งานได้และฉันใช้รหัสของคุณที่นั่น ฉันทำการแยกและเพิ่มการสนับสนุนสำหรับการข้ามเซลล์ว่าง (ไม่ใช่ตัวเลข) ในผลรวม (มิฉะนั้นจะเกิดข้อผิดพลาดหากมีเซลล์ว่างอยู่ในช่วง): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart

2

นี่คือวิธีที่ฉันได้มันไปทำงาน:

  1. เปิดTools>Script Editor

  2. วางรหัสด้านล่างบันทึกสคริปต์

  3. กลับไปที่สเปรดชีตของคุณ ใช้กับ=countColoredCells(A1:Z5,C5)ที่C5เป็นมือถือที่มีสีที่จะนับ

รหัส:

/**
* @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;
};

รหัสเครดิต (เปลี่ยน): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html


ฉันพบข้อผิดพลาดช่วงไม่พบ ???? : ((
Kegham K.

กำลังได้รับTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.