行番号・列番号(R1C1)-2次元配列-A1 変換コンバーター

ここは、GAS(Google Apps Script)でスプレッドシートを操作する方のためのサイトです。

以下では、同じセル番地を3種類の形式であらわしています。

R1C1形式 2次元配列 A1形式
A B C D E F G H I J
1
2
3
4
5
6
7
8
9
10

例えば、スプレッドシートAからある特定の項目だけを拾ってきて、スプレッドシートBに内容を転記する場合を考えてみます。

スプレッドシートAから文字列DのみピックアップしてスプレッドシートBに転記する

GASにまだ慣れないうちは、getRange()をfor文で回したりしがちです。

しかし慣れてくると、getDataRange().getValues()でシートをまるごと2次元配列で取得、必要な配列だけを取り出しsetValues()できるようになります。

特に大量のデータを扱う場合は、配列の方が格段に処理が軽く早く便利です。

しかし、getRange(行番号,列番号)の行番号,列番号がそれぞれ「1」で始まるのに対して、
2次元配列をインデックス(data[行配列][列配列])で取得する時はそれぞれ「0」で始まります。

この「1」のズレにつまずくことが多かったので、確認のためこのサイトを作りました。

2次元配列の行をfor文で回した時の挙動

上のコードを確認した後で、以下のパラメータを設定してみてください。

初期値 増加値 列配列
A B C D E F G H I J
1
2
3
4
5
6
7
8
9
10

シートの内容がさらに複雑化すると、二重ループで行も列もジャンプしながら取得したり、setしていくことになります。

私にとってはこれが頭痛の種なんですが…。皆さまの頭痛が少しでも軽減されることをお祈り申し上げます。