IT
PR

【OfficeScripts】 最終行と列の取得方法

Excel OfficeScripts 最終行 最終列 取得
ほし
記事内に商品プロモーションを含む場合があります

こんにちは、ほしコラム管理人のほしです。

今回は、OfficeScriptsで該当範囲の最終行と最終列を取得する方法について説明していきます。

これは、1行目からセルの値が入力されている最終行まで処理を繰り返す際などに実施できます。

上記が実施できると最終行・列が変更された場合でも最初から最後まで繰り返しをすることができます。

本記事で解決できることは以下になっています。

本記事で解決できること!
  1. Excelで入力範囲の最終行の取得方法
  2. Excelで入力範囲の最終列の取得方法
  3. 任意の列の最終行を取得方法
  4. 任意の行の最終行を取得する方法

簡単なことかもしれませんが、これらができるようになるだけでOfficeScriptsのコードの汎用性が高くなると思います。

はじめに

本記事で紹介するfunctionは、以下のようになります。

  • <<Range>>.getLastCell() → 最後のセルを参照
  • <<Range>>.getRowIndex() → 行のindexを取得
  • <<Range>>.getColumnIndex() → 行のindexを取得
  • <<Range>>.getRangeEdge() → Ctrl + 方向キーと同一の操作

上記を組み合わせて利用することで最終行・最終列を取得することができます。

しかし単一セル「A1」を選択した場合と、単一の列「A:A」を選択した場合で最終行の取得方法に相違が出るので確認していきましょう!

OfficeScripts 最終行の取得 イメージ図
OfficeScripts 「Ctrl+矢印」で取得した場合
OfficeScripts 最終行の取得 イメージ図
OfficeScripts 「選択範囲の最終セル」で取得した場合

上記のように、選択方法と取得方法に応じて取得できる最終行が異なります。

OfficeScripts ソースコード

ここからは、実際にサンプルのソースコードを用いて最終行・最終列を取得する方法を紹介していきます。

紹介する内容は大きく分けて4パターンになります!

  1. A1セルを選択した場合に最終行を取得する方法
  2. A:A列を選択した場合に最終行を取得する方法
  3. A1セルを選択した場合に最終列を取得する方法
  4. 1:1行目から最終列を取得する方法
1
A1セルを選択して

最終行を取得する方法

A1セルを選択した場合に最終行を取得する方法は以下のコマンドです。

1WorkSheet.getCell(0,0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex()

処理は以下の順番で実行されます。

ワークシートオブジェクト(Sheet1など)からA1セルを選択する

WorkSheet.getCell(0,0)

Ctrl+↓で最終行を取得する

getRangeEdge(ExcelScript.KeyboardDirection.down)

最終行の行数を取得する

getRowIndex()

サンプルソースコードではfunctionとして最終行のindexを返すように実施しています。

1function main(workbook: ExcelScript.Workbook) {
2
3    const sheet1 = workbook.getWorksheet('Sheet1');
4
5    console.log(getlastRow(sheet1,0));
6
7  // A1セルから入力されている最終行を取得
8  function getlastRow (sheet : ExcelScript.Worksheet , column :number){
9
10    let lastrange = sheet.getCell(0,column).getRangeEdge(ExcelScript.KeyboardDirection.down)
11
12    return lastrange.getRowIndex();    
13  }
14
15}

実行結果

OfficeScripts 最終行の取得 実行結果

コンソールログに出力した結果を確認すると、13という値が取得できます。

A1セルの最終行はA14セルですので取得できていることが確認できています。

indexは0から始まるので、実際の行番号とは乖離が発生します。

B1セルを選択した場合

B列には途中が空白があるので上記のコマンドを実行すると「B8」セルが最終行として取得されます。

「B8」セルではなく「B14」セルを取得したい場合は、列を指定して最終行を取得してみましょう!

2
A:A列を選択して

最終行を取得する方法

A列を選択した場合に、最終行を取得する方法は以下のコマンドです。

1WorkSheet.getRange('A:A')getUsedRange().getLastCell().getRowIndex()
ワークシートオブジェクト(Sheet1など)からA:A列を選択する

WorkSheet.getRange(‘A:A’)

選択範囲の使用されている範囲を取得する

getUsedRange()

選択範囲の最終行を取得する

getLastCell()

最終行の行数を取得する

getRowIndex()

1function main(workbook: ExcelScript.Workbook) {
2
3    const sheet1 = workbook.getWorksheet('Sheet1');
4
5    const range = sheet1.getRange('A:A');
6    
7    console.log(getlastRows(range))
8
9  // A:A列を選択している場合
10  function getlastRows(range: ExcelScript.Range) {
11
12    let lastrow = range.getUsedRange().getLastCell().getRowIndex();
13    return lastrow;
14  }
15
16}

上記のコマンド以外でも、A1セルから最終行を取得するで使用したコマンドでも最終行は取得できます。

途中のセルに空白などが存在しない場合のみに限ります!

実行結果

コンソールログに出力すると13という値が取得できます。

A1セルの最終行はA14セルですので取得できていることが確認できています。

OfficeScripts 最終行の取得 実行結果

B列を選択した場合

B列には途中が空白がある際に最終行である「B14」セルを取得したい場合は

1WorkSheet.getRange('B:B')getUsedRange().getLastCell().getRowIndex()

上記のfunctionでないと最終行は取得することができません!

「B8」セルの行を取得したい場合は、下記で取得できます。

1getRangeEdge(ExcelScript.KeyboardDirection.down)
3
A1セルを選択して

最終列を取得する方法

A1セルを選択した場合に、最終列を取得する方法は以下のコマンドです。

基本的には、行を取得する方法と同様です。

右方向にセルの参照を移動することで、最終列を取得することができます。 

1WorkSheet.getCell(0,0).getRangeEdge(ExcelScript.KeyboardDirection.right).getColumnIndex()

上記のfunctionの処理順としては以下のようになります。

ワークシートオブジェクト(Sheet1など)からA1セルを選択する

WorkSheet.getRange(‘0:0’)

Ctrl+→で最終行を取得する

getRangeEdge(ExcelScript.KeyboardDirection.right)

最終列の列数を取得する

getColumnIndex()

実行結果

OfficeScripts 最終列の取得 実行結果

コンソールログに出力すると2という値が取得できます。

1行目の最終列はA3セルですので、想定通り取得できています。

A9セルを選択した場合

9行目には途中で空白のセルがあるので、その際に上記のコマンドを実行すると「B8」セルが最終行として取得されます。

「B8」セルではなく「B14」セルを取得したい場合は、列を指定して最終行を取得してみましょう!

4
1行目を選択して

最終列を取得する方法

1列目を選択した場合に、最終列を取得する方法は以下のコマンドです。

1WorkSheet.getRange('1:1')getUsedRange().getLastCell().getColumndex()

コマンドの実行内容は以下のようになります。

ワークシートオブジェクト(Sheet1など)から1列を選択する

WorkSheet.getRange(‘1:1’)

選択範囲の使用されている範囲を取得する

getUsedRange()

選択範囲の最終列を取得する

getLastCell()

最終列の列数を取得する

getColumnIndex()

上記のコマンド以外でも、A1セルから最終行を取得するで使用したコマンドでも最終行は取得できます。

1WorkSheet.getRange('1:1').getRangeEdge(ExcelScript.KeyboardDirection.right)

途中のセルに空白などが存在しない場合のみに限ります!

実行結果

OfficeScripts 最終列の取得 実行結果

コンソールログに出力すると2という値が取得できます。

1行目の最終列はA3セルですので、想定通り取得できています。

9列目を選択した場合

 9列目には最終列の前に空白のセルがあるので取得方法に工夫が必要です。

最終列を取得するには、列選択から最終列を取得する際に紹介したfunctionです。

1WorkSheet.getRange('1:1')getUsedRange().getLastCell().getColumndex()

最後に

ここまで記事を読んでいただきありがとうございました。

これで、OfficeScriptsで最終行・最終列を取得することができるようになります。

本ブログでは、業務効率化を目指して主にPowerAutomateを使用して効率化の方法を紹介しております。

Teams・Excel・SharePointなど様々なツールと利用と連携できるPowerAutomateはとても便利ですのでこれを機に学習してみてください!

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ほし
ほし
エンジニア
ほしコラム管理人のほしです。 20代のITエンジニアです。 PowerAutomateで業務効率化の方法を中心に紹介していきます! たまに日常生活についても記事にしていきます! ほしコラム - にほんブログ村
記事URLをコピーしました