亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Google 表格 - 將數值分配給彩色單元格,然后將 SUM 值一起放在另一列中

Google 表格 - 將數值分配給彩色單元格,然后將 SUM 值一起放在另一列中

炎炎設計 2023-02-24 16:26:28
我不確定這是否可以完成,但我希望嘗試為特定顏色分配一個數值,然后對這些值求和并將結果顯示在不同的列中。上圖是 Green + Green + Gray = 7 和 Green + Red + Green = 6 的理想輸出。我希望能夠為任何單元格分配綠色 3,灰色單元格 1 和紅色單元格0 然后將它們相加顯示在“每月總積分”列 I 中。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

解決方案:

您可以使用使用getBackground()的自定義公式來獲取單元格背景顏色的十六進制值,并根據顏色和點之間的映射計算點的總數:

function getPoints(row, column) {


  const ss = SpreadsheetApp.getActive();

  const sh = ss.getActiveSheet();  

  const start_cell = sh.getDataRange().getCell(row, column);    

  const cells_range = start_cell.offset(0, 0, 1, 3);

  const cells_bg = cells_range.getBackgrounds().flat();    

  const colors_src_range = sh.getRange('C1:E1');

  const colors_source = colors_src_range.getBackgrounds().flat();

  const colors_pts = colors_src_range.getValues().flat().map(cv=>cv.replace( /^\D+/g, ''));


  var total_pts = 0;  

  cells_bg.forEach(cbg=>{

  colors_source.forEach( (col,index)=>{

  total_pts += cbg == col ? parseInt(colors_pts[index]) : 0

  });})

  

  return total_pts;

}

然后您可以將它用作工作表中的公式:getPoints(row, column)為此您需要指定具有顏色的最左側單元格的坐標(在您的示例中為 C 列),它將返回顏色行的總點數。

更新:

  • 腳本會自動從范圍中獲取十六進制值C1:E1,因此您無需手動傳遞這些值。

  • 每種顏色的點數也由腳本使用正則表達式自動拾取。

  • 代碼更加優化,因為它使用getBackgrounds()而不是getBackground()。


例子:

例如,這個公式:

=getPoints(row(C6),column(C6))

將導致:

http://img1.sycdn.imooc.com//63f874eb000196b806540186.jpg

查看完整回答
反對 回復 2023-02-24
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號