ゴリラストロングの雑記帳

月収10万円の広告収入を目指す自称専業ライターのブログです。




【GAS】SUMIF、RANK、条件付き書式を用いた商品ごとの売上を計算するスクリプト。




どうも、ゴリラストロングです。

 

今回はGASで、SUMIF、RANK、条件付き書式を用いた商品ごとの売上を計算するスクリプトを作成しました。

 

<元データ>

f:id:gorilla-strong:20200317185834p:plain

 

スクリプト実行後>

f:id:gorilla-strong:20200317185950p:plain

商品ごとに売上高を計算し、売上の順位をつけて、トップ3にのみ赤色の塗りつぶしをしています。

 

 

 スポンサーリンク

  

 

ソースコード

function myFunction() {
  
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = spreadsheet.getSheetByName("売上表")
  
  var lastrow = sheet.getRange(sheet.getMaxRows(), 5).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()
  
  var lastrow2 =sheet.getRange(sheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()
  
  for (i=3; i<=lastrow; i++) {
  
  sheet.getRange(i, 6).setFormula("=SUMIF(B3:C"+lastrow2+",E"+i+",C3:C"+lastrow2+")")
  
  sheet.getRange(i, 7).setFormula("=RANK(F"+i+",$F$3"+":$F$"+lastrow+")")
  
  }
  
  
  var range = sheet.getRange(3,7,lastrow,1);
  var rule = SpreadsheetApp.newConditionalFormatRule()
             .whenNumberLessThan(4)
             .setBackground("#FF0000")
             .setRanges([range])
             .build();
  var rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
  
  
  for (j=3;j<=lastrow;j++){
  
  if (sheet.getRange(j, 7).getValue()<=3){
    sheet.getRange(j, 5,1,2).setBackground("#FF0000")
  }
  
  }
  
  
  
}

 条件付き書式の設定が難しかったです。

 

 

<参照させていただいたサイト>

https://tonari-it.com/gas-if/#toc4

https://tonari-it.com/gas-getrange-row-column/

https://caymezon.com/gas-conditional-format-rules/#toc40

 

 

以上、ゴリラストロングでした。

 

 スポンサーリンク