Google関連

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

もり(@moripro3)さんがブログで、Google Apps Scriptでスプレッドシートの最終行と最終列を取得するコードを紹介されていました。

Excel VBAで処理するならEndプロパティが活躍しそうな場面です。

もりさんの記事では、セル範囲を配列として取得した後、逆向きにループすることによって、空白セルを意識した最終行・列を取得するコードを紹介されています。

実は、Google Apps ScriptにもVBAのEndプロパティ的な処理が書けるメソッドが用意されているので、今回はそちらを紹介してみようと思います。

Selection.getNextDataRangeメソッド

GASのSelectionオブジェクトには、アクティブなセル範囲から指定した方向に拡張したセル範囲を返すgetNextDataRangeメソッドが用意されています。

文字で書くと分かりづらいですね。
要するに、セルを選択した状態でCtrl + Shift + [方向キー]を押した状態のセルを取得できるメソッドです。

このメソッドを使うことで、VBAのEndプロパティを使ったコードのように最終行や最終列を取得することができます。

function myFunction() {
  var col = 2;
  var sheet = SpreadsheetApp.getActiveSheet();
  var rng = sheet.getRange(1, col, sheet.getLastRow(), 1);
  rng.activate(); //指定した列選択
  var lastRng = SpreadsheetApp.getSelection().getNextDataRange(SpreadsheetApp.Direction.UP);
  lastRng.activate();
  SpreadsheetApp.getUi().alert(lastRng.getLastRow());
}

function myFunction2() {
  var row = 3;
  var sheet = SpreadsheetApp.getActiveSheet();
  var rng = sheet.getRange(row, 1, 1, sheet.getLastColumn());
  rng.activate(); //指定した行選択
  var lastRng = SpreadsheetApp.getSelection().getNextDataRange(SpreadsheetApp.Direction.PREVIOUS);
  lastRng.activate();
  SpreadsheetApp.getUi().alert(lastRng.getLastColumn());
}

選択範囲が変わってしまうのが難点ですが、気になる場合は処理前に選択範囲を記憶しておいて、処理後に戻せば良いかと思います。

2019/2/7 追記:
よく考えたら、Range.getNextDataCellメソッドを使えば選択範囲を変更する必要がありませんでした😅

2019/2/8 追記:
コードに一部不具合があったので修正しました。

function myFunction3() {
  var col = 3;
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRng = sheet.getRange(sheet.getMaxRows(), col);
  if (lastRng.isBlank() == true) {
    lastRng = lastRng.getNextDataCell(SpreadsheetApp.Direction.UP);
  }
  lastRng.activate(); //確認用
  SpreadsheetApp.getUi().alert(lastRng.getLastRow());
}

function myFunction4() {
  var row = 6;
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRng = sheet.getRange(row, sheet.getMaxColumns());
  if (lastRng.isBlank() == true) {
    lastRng = lastRng.getNextDataCell(SpreadsheetApp.Direction.PREVIOUS);
  }
  lastRng.activate(); //確認用
  SpreadsheetApp.getUi().alert(lastRng.getLastColumn());
}

指定したスライドにユーザー設定レイアウトを適用するPowerPointマクロ前のページ

Word文書をMicrosoft SwayのWebページに変換する方法次のページ

関連記事

  1. Office アドイン

    [Office用アプリ]Google ドライブでアプリを公開する方法

    今回は先日登壇した第一回 Apps for Office 勉強会の中で…

  2. Google関連

    [Google Apps Script]Webアプリケーションを作成する。

    Google Apps Scriptではスプレッドシートや文書上で動く…

  3. Google関連

    [Google Apps Script]insertTextBoxメソッドでスライドにテキストボック…

    昨年の9月にスライド上にテキストボックスを挿入するスクリプトについて記…

  4. Google関連

    [Google Apps Script]選択中のスライドに対してのみ処理を行う

    以前、Google スライドですべてのスライドに対して処理を行う方法に…

  5. Google関連

    [Google Apps Script]スプレッドシートのセル範囲に指定した値が含まれているかを判定…

    先日、もり(@moripro3)さんから、「スプレッドシートの二次元配…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP