「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列からデータの入力されている最終行番号を取得するスクリプトを作ってみました。
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();
var last_row = sh.getLastRow();
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列の最終セルを選択するのなら、以下のようなスクリプトでしょうか。
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();
var last_row = sh.getLastRow();
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;
- Newer:FIND関数で2つ目の位置を調べる
- Older:結合セルの判定とアドレスの取得を行うExcelマクロ
Home » Googleスプレッドシートの使い方 » 最終行を取得するGASスクリプト