見出し画像

RCってなんだ? GAS

初めてわかると面白いな。

こんにちは。サキナオコです^^
今日も雨ですね。秋の長雨でしょうか。

いつもご覧いただき、スキ、フォロー、コメント、サポート、オススメまでも本当にほんとうにどうもありがとうございます!!*^o^*
おかげさまでやる気続いております!^o^/

さて、Rangeクラスです。スプレッドシートのセルを操作するクラス。

文字色や背景色を変えてみたり、いろいろ試していました。
本日は値を取得したり(getValueメソッド)入力したり(setValueメソッド)数式を入力したり(setFormulaメソッド他)のところです。

ただの写経よりも一歩前進ということで、一度文字色や背景色を変えたシートを元にもどして、更にサンプルのような数値をスクリプトで入力してみようとやってみました。

function myFunction_9_12() {

 const ranges = SpreadsheetApp.getActiveSheet().getRange('A2:E4');
 console.log(ranges.clearFormat());  // セルの書式初期化
 

 const rangess = SpreadsheetApp.getActiveSheet();
 console.log(rangess.clearContents());  // セルの入力削除
 
 const values = [
   ['item','amount','unit cost','price']
   
 ];

 rangess.getRange(1,1,values.length,values[0].length).setValues(values);

 const inputs = [
   ['apple','2','100'],
   ['grape','3','1000'],
   ['melon','2','500']
 ]
 rangess.getRange(2,1,inputs.length,inputs[0].length).setValues(inputs);

 rangess.getRange('A5').setValue('total');

}

function myFunction_9_12_1(){

 const sheet = SpreadsheetApp.getActiveSheet();

 sheet.getRange('B5:D5').setFormulas([[
   '=SUM(B2:B4)',
   '=SUM(C2:C4)',
   '=SUM(D2:D4)'
 ]]);

 sheet.getRange('D2:D4').setFormulaR1C1('=RC[-2]*RC[-1]');  // 単体の数式、ここではセル範囲。同じ数式適用。

}

おお!真っ赤な背景色と白い文字だったのが元にもどりました。
そして、果物の表ができています!

おおお。すごい…シートに直接書いた方が早いのかもしれませんが、別の場所から操作している感がたまりません!

そして、です。

setFormulaR1C1ってこれなんだろう??と思いました。
R1C1表記って...
RC[-2]*RC[-1]とは??RC …バンド名?建築の工法名?

テキストにはなんだかさらっと書いてあり、よくわからなかったので調べました。

バンドでも工法でもなく、単にRow(行)のR、Column(列)のCでした。
で、それは基準セルからの相対的な位置関係を示すものと。

R[-1](基準から上に1こ進む)とか、そういうのはわかりましたが、
調べてもRC[-2]*RC[-1]というのがどうしてそういう記述になるのかわかりませんでした。

調べると、あるサイトに「Rの後に何も記述しない場合は同一行」とありました。
ということはRC[-2]というのは同一行で左横に2こ進むってことですね!
でRC[-1]は同一行で左横に1こ。

基準は「D2:D4」の範囲だから、以下のピンクx青(RC[-2]*RC[-1])

画像1

ってことか!!@@
と理解できました!ああ、それで、テキストでは「対象となる範囲のすべてのセルに引数で与えた同じ数式が入力」となるのかあ〜

うわースッキリ〜!!

となり嬉しいまま今日は終了です(理解、合っているのかな??)。


この記事が気に入ったらサポートをしてみませんか?