Home » Googleスプレッドシートの使い方 » 最終行を取得するGASスクリプト

対象:Googleスプレッドシート & Google Apps Script

「a列最終行取得 gas」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

A列でデータの入力されている最後の行・あるいは行番号を取得するGAS(Google Apps Script)のコードを探している方による検索でしょうか。

Excel VBAの場合

Excel VBA(Visual Basic for Applications)で、データの入力されている最終行を取得するには、RangeオブジェクトのEndプロパティを利用するのが定番の方法です。

データが切れ目なく入力されているのならEndプロパティの引数に定数・xlDownを指定することでA1セルから下方向に終端セルを取得、途中に空白セルが存在している可能性があるのなら同じくEndプロパティの引数に定数・xlUpを指定してA108576セルやA65536セルから上に向かって終端セルを取得するというのが定番処理です。

[スポンサードリンク]

Googleスプレッドシートでも、[Ctrl]+方向キーでデータの途切れているセルへジャンプすることができるので、GASにも同じようなメソッドが存在しているのではないかと思っていたのですが、どうやらそうではなさそうです。

getLastRow()メソッドでは各列のデータの入力されている最終行番号を取得できない

GASには、最終行を取得するのに使えるgetLastRowという名前のメソッドがいくつか存在しています。

これらのgetLastRow()メソッドで、列を指定してデータの入力されている最終行番号を取得できればいいのですが、残念ながらできないようです。

Sheet.getLastRow()メソッドはシート全体から最終行番号を返してきます。

Range.getLastRow()メソッドは指定されたセル範囲からデータが入っているかどうかは関係なく最後の行番号を返してきます。

A列の最終行番号を取得するサンプルスクリプト

メソッドがあるような気がしてならないのですが、残念ながらみつけられないので、A列からデータの入力されている最終行番号を取得するスクリプトを作ってみました。

function sample_getLastRowNumber_ColumnA(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getActiveSheet();
 var last_row = sh.getLastRow();

 for(var i = last_row; i >= 1; i--){
  if(sh.getRange(i, 1).getValue() != ''){
   Browser.msgBox(i);
   break;
  }
 }
}

Sheet.getLastRow()メソッドでそのシートの最終行番号を取得して、
 var last_row = sh.getLastRow();

最終行から上方向にループを回して、
 for(var i = last_row; i >= 1; i--){

A列のセルを順番に取得してRange.getValue()メソッドを使って値を取得して、データが存在してなければ、
  if(sh.getRange(i, 1).getValue() != ''){

メッセージボックスに行番号を取得して、
   Browser.msgBox(i);

ループを終了しています。
   break;

A列の最終セルを選択するサンプルスクリプト

A列の最終セルを選択するのなら、以下のようなスクリプトでしょうか。

function sample_selectLastCell_ColumnA(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getActiveSheet();
 var last_row = sh.getLastRow();

 for(var i = last_row; i >= 1; i--){
  var rng = sh.getRange(i, 1);
  if(rng.getValue() != ''){
   rng.activate();
   break;
  }
 }
}

先の、最終行番号を取得するスクリプトと同じ考え方で、A列のセルを下から順番に調べて、データが入力されていなかった場合に、
 for(var i = last_row; i >= 1; i--){
  var rng = sh.getRange(i, 1);
  if(rng.getValue() != ''){

そのセルをRange.activate()メソッドでアクティブにして、ループを終了しています。
   rng.activate();
   break;

[スポンサードリンク]

Home » Googleスプレッドシートの使い方 » 最終行を取得するGASスクリプト

「Googleスプレッドシートの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.