Google Apps Script

【GAS】指定行の最終列番号・指定列の最終行番号を取得する

 

※2019/9/4追記:もっと便利な書き方を見つけました!

【GAS】1行で書ける!特定列の最終行・特定行の最終列を取得する方法

 

 

スプレッドシートで最終行・最終列を取得したい!ことってありますよね

 

もり
もり
それなら簡単だよ!メソッドがあるじゃん

 

sheetオブジェクト.getLastRow()
スプレッドシートのデータ範囲の最終行を取得する

sheetオブジェクト.getLastColumn()
→スプレッドシートのデータ範囲の最終を取得する

 

このメソッドを使用して、スプレッドシートを検索してみます。

lastrowcol1

 

コードがこちらです。「最終行=7」と「最終列=5(E列)」が取得できます。

 

モリ
モリ
ちがう!そうじゃないんだ!

B列の最終行は?とか、

3行目の最終列は?が知りたいぞ

 

もり
もり
あ、なるほどね~

 

「特定の列」の最終行の行番号を取得する

関数を作ってみました。

 

B列の最終行=5が取得できました。

lastrowcol2

filterメソッドを使用しています。引数にStringを与えると、データが存在する要素のlengthを取得できます。

Arrayオブジェクト.filter()
→配列の内容を特定の条件で絞り込む

 

「特定の行」の最終列の列番号を取得する

こちらも関数を作ってみました。

 

3行目の最終列=4(D列)が取得できます。

lastrowcol3

空白セルがある場合も取得できる?

このように、途中に「空白セル」がある場合を試してみました。

lastrowcol4

コードがこちらです。関数findLastRowとfindLastColの中身は、上で示したコードと同じです。

最終行と最終列ではありませんね・・・。

 

モリ
モリ
データが存在するセルの個数になってるな

 

逆向きループで取得してみる

データを少し変えてみました。※getLastColumn()で取得する最終列は8です。

lastrowcol5

3行目の最終列番号「6」を取得するコードがこちら。

 

【処理の概要】

getLastColumn()で取得する最終列(8)までの1行を、二次元配列RowValuesに格納する。

配列の中身を逆向きループでチェックし、もし空でなければ、その要素番号が最終列となる。
ただし、要素番号は0から始まるので、スプレッドシートの列番号に合わせるため+1する。

【追記】1行で書ける方法

※2019/9/4追記:こちらも併せてご覧ください!

【GAS】1行で書ける!特定列の最終行・特定行の最終列を取得する方法GASで「A列の最終行は?」「3行目の最終列は?」など、「特定列の最終行」「特定行の最終列」を取得する方法を紹介しています。ポイントはgetNextDataCellメソッドです。...