セル範囲を操作する

【GAS】スプレッドシートで特定列の最終行・特定行の最終列を選択する

GASでスプレッドシートで特定列の最終行・特定行の最終列を選択するには「getNextDataCell(direction)」を利用する。

getNextDataCell(direction)

範囲の最初の列と行にあるセルから、指定した方向の次のセルを返します。これは、データが連続するセル範囲の端か、セルがその方向のスプレッドシートの端にあります。これは、エディタで「 Ctrl+[arrow key]」を入力するのと同じです。

https://developers.google.com/apps-script/reference/spreadsheet/range#getnextdatacelldirection

スプレッドシートで特定列の最終行・特定行の最終列を選択するGAS実行の様子

getNextDataCell(direction)メソッドを利用して、スプレッドシートで特定列の最終行・特定行の最終列を選択するGASを実行してみました。

getNextDataCell(direction)
getNextDataCell(direction)を実行した様子

getNextDataCell(direction)を実行することで、

  • 任意セルの最終行
  • 任意セルの最終列

といった特定行列の最終セルを取得することができます。

スプレッドシートで指定した行・列・最終行・最終列までのセル範囲を取得するは、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートで指定した行・列・最終行・最終列までのセル範囲を取得する

スプレッドシートで特定列の最終行・特定行の最終列を選択するGAS

function getnextdatacell(){
 //SpreadsheetAppを起動
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  //0番目のシートを選択
  let sht = ss.getSheets()[0];
  //テキストを準備
  let text1 = "Spread";
  let text2 = "Sheet";
  let text3 = "Blue";
 
 //繰返し文でテキストを設置
  for(var i=1;i<=5;i++){
    sht.getRange(i,1,1,1).setValue(text1);
    sht.getRange(i,2,1,1).setValue(text2);
    sht.getRange(i,3,1,1).setValue(text3);
    //横に繰返し
    for(var r=1;r<=5;r++){
      sht.getRange(1,r,1,1).setValue(text1);
      sht.getRange(2,r,1,1).setValue(text2);
      sht.getRange(3,r,1,1).setValue(text3);
    }
  }
 
 //段差をつけるために最終行箇所を少し削除(■getNextDataCell()で最終行を取得)
  var rng1 = sht.getRange(1,2).getNextDataCell(SpreadsheetApp.Direction.DOWN).getA1Notation();
  var rng2 = sht.getCurrentCell().offset(0,1).getA1Notation();
  sht.getRange(rng1+":"+rng2).clearContent();
 //YESNOで作業有無を確認
  const yesno = Browser.msgBox("任意の範囲の最終行と最終列を取得しますか?",Browser.Buttons.YES_NO);
 //YESなら
  if(yesno == "yes"){
    //始点セルを入力してもらう
    let cell01 = Browser.inputBox("最終行と最終列を取得するための始点セルをA1形式で入力");
    //■getNextDataCell(SpreadsheetApp.Direction.DOWN)で最終行を取得
    let rw01 = sht.getRange(cell01).getNextDataCell(SpreadsheetApp.Direction.DOWN).getA1Notation();   //■getNextDataCell(SpreadsheetApp.Direction.NEXT)で最終列を取得
    let cl01 = sht.getRange(cell01).getNextDataCell(SpreadsheetApp.Direction.NEXT).getA1Notation();  //始点セルを起点に最終行・最終列を報告
    Browser.msgBox("「"+cell01+"」の最終行セルは「"+rw01+"」で最終列セルは「"+cl01+"」です");
  }else{
    //作業キャンセルを報告
    Broswer.msgBox("最終行・列のセル取得をキャンセルしました");
  }
}

getNextDataCell(direction)のパラメーター

名前タイプ説明
directionDirectionフリーズする行数。
次のデータ領域のエッジセルを検出する方向。

getNextDataCell(direction)の戻り値

Range - データ領域のエッジセルまたはスプレッドシートのエッジにあるセル。

スプレッドシートで特定列の最終行・特定行の最終列を選択するまとめ

GAS×スプレッドシートで特定列の最終行・特定行の最終列を選択するならgetNextDataCell(direction)メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートで指定した行・列のセル範囲を取得する

関連記事:【GAS】スプレッドシートの最終行を取得する

関連記事:【GAS】スプレッドシートの最終列を取得する

関連記事:【GAS】スプレッドシート内で検索を行う

-セル範囲を操作する