セル範囲を操作する

【GAS】スプレッドシートにR1C1数式を複数設定する

GASでスプレッドシートにR1C1数式を複数設定するには「setFormulasR1C1(formulas)」を利用する。

setFormulasR1C1(formulas)

数式の長方形グリッドを設定します(この範囲のディメンションと一致する必要があります)。数式は R1C1 表記で指定する必要があります。

https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasr1c1formulas

スプレッドシートにR1C1数式を複数設定するGAS実行の様子

setFormulasR1C1(formulas)メソッドを利用して、スプレッドシートにR1C1数式を複数設定するGASを実行してみました。

setFormulasR1C1を設置することで

  • R1C1形式の数式を複数の配列セルに設置する

といったことが可能です。

ただし、R1C1形式の指定を誤ると望んだ計算結果が受け取れなくなってしまうので、注意する必要があります。

またsetFormulasR1C1は、for文によるsetValue()でも問題なく数式を複数設置することが可能です。

スプレッドシートで範囲を保護する場合は、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートで範囲を保護する

スプレッドシートにR1C1数式を複数設定するGAS

function setflormulasr1c1(){
  //SpreadsheetAppを起動
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  //0番目のシートを取得
  let sht = ss.getSheets()[0];
  // .inputBoxで値を入力してvalに格納
  const val = Browser.inputBox("値を入力してください");
 //  valを数値へ変換してnumへ格納
  const num = Number(val);
  // 繰り返し処理で適当な値を4行分入力
  for(let i =1;i<=4;i++){
    sht.getRange(i,1).setValue(num);
    sht.getRange(i,2).setValue(num+i);
  }
  //複数の数式を作成して各変数へ格納
  const formula01 = "sum(R[0]C[-2]:R[0]C[-1])";
  const formula02 = "average(R[0]C[-2]:R[0]C[-1])";
  const formula03 = "min(R[0]C[-2],R[0]C[-1])";
  const formula04 = "max(R[0]C[-2],R[0]C[-1])";
 //数式を配列に格納
  const formulas = [
    [formula01],
    [formula02],
    [formula03],
    [formula04]
  ];
 //数式を設置する範囲を設定してcellに格納しA1形式でrangeに変更
  const cell = sht.getRange(1,3,4,1);
  const range = cell.getA1Notation();
 //cell範囲にsetFormulasで配列の数式を設置
  cell
  .activate()
  .setFormulas(formulas);
 //数式設置の旨を掲載!
  Browser.msgBox("セル範囲「"+range+"」に数式を設置しました");
}

setFormulasR1C1(formulas)のパラメーター

名前説明
formulasString[][]数式の2次元配列(R1C1形式)
setFormulasR1C1(formulas)のパラメーター

setFormulasR1C1(formulas)の戻り値

Range - チェーン用の範囲。

スプレッドシートにR1C1数式を複数設定するまとめ

GAS×スプレッドシートにR1C1数式を複数設定するならsetFormulasR1C1(formulas)メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートの範囲をセル結合する

関連記事:【GAS】スプレッドシートで縦方向にセル結合する

関連記事:【GAS】スプレッドシートの指定範囲を昇順・降順に並び替える

関連記事:【GAS】スプレッドシートで基準セルから指定の行・列数分移動して任意の行・列範囲を取得する

-セル範囲を操作する