【OfficeScripts】 最終行と列の取得方法
こんにちは、ほしコラム管理人のほしです。
今回は、OfficeScriptsで該当範囲の最終行と最終列を取得する方法について説明していきます。
これは、1行目からセルの値が入力されている最終行まで処理を繰り返す際などに実施できます。
上記が実施できると最終行・列が変更された場合でも最初から最後まで繰り返しをすることができます。
本記事で解決できることは以下になっています。
- Excelで入力範囲の最終行の取得方法
- Excelで入力範囲の最終列の取得方法
- 任意の列の最終行を取得方法
- 任意の行の最終行を取得する方法
簡単なことかもしれませんが、これらができるようになるだけでOfficeScriptsのコードの汎用性が高くなると思います。
はじめに
本記事で紹介するfunctionは、以下のようになります。
- <<Range>>.getLastCell() → 最後のセルを参照
- <<Range>>.getRowIndex() → 行のindexを取得
- <<Range>>.getColumnIndex() → 行のindexを取得
- <<Range>>.getRangeEdge() → Ctrl + 方向キーと同一の操作
上記を組み合わせて利用することで最終行・最終列を取得することができます。
しかし単一セル「A1」を選択した場合と、単一の列「A:A」を選択した場合で最終行の取得方法に相違が出るので確認していきましょう!
上記のように、選択方法と取得方法に応じて取得できる最終行が異なります。
OfficeScripts ソースコード
ここからは、実際にサンプルのソースコードを用いて最終行・最終列を取得する方法を紹介していきます。
紹介する内容は大きく分けて4パターンになります!
- A1セルを選択した場合に最終行を取得する方法
- A:A列を選択した場合に最終行を取得する方法
- A1セルを選択した場合に最終列を取得する方法
- 1:1行目から最終列を取得する方法
最終行を取得する方法
A1セルを選択した場合に最終行を取得する方法は以下のコマンドです。
1WorkSheet.getCell(0,0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex()
処理は以下の順番で実行されます。
WorkSheet.getCell(0,0)
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}
実行結果
コンソールログに出力した結果を確認すると、13という値が取得できます。
A1セルの最終行はA14セルですので取得できていることが確認できています。
B1セルを選択した場合
B列には途中が空白があるので上記のコマンドを実行すると「B8」セルが最終行として取得されます。
「B8」セルではなく「B14」セルを取得したい場合は、列を指定して最終行を取得してみましょう!
最終行を取得する方法
A列を選択した場合に、最終行を取得する方法は以下のコマンドです。
1WorkSheet.getRange('A:A')getUsedRange().getLastCell().getRowIndex()
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セルですので取得できていることが確認できています。
B列を選択した場合
B列には途中が空白がある際に最終行である「B14」セルを取得したい場合は
1WorkSheet.getRange('B:B')getUsedRange().getLastCell().getRowIndex()
上記のfunctionでないと最終行は取得することができません!
「B8」セルの行を取得したい場合は、下記で取得できます。
1getRangeEdge(ExcelScript.KeyboardDirection.down)
最終列を取得する方法
A1セルを選択した場合に、最終列を取得する方法は以下のコマンドです。
基本的には、行を取得する方法と同様です。
右方向にセルの参照を移動することで、最終列を取得することができます。
1WorkSheet.getCell(0,0).getRangeEdge(ExcelScript.KeyboardDirection.right).getColumnIndex()
上記のfunctionの処理順としては以下のようになります。
WorkSheet.getRange(‘0:0’)
getRangeEdge(ExcelScript.KeyboardDirection.right)
getColumnIndex()
実行結果
コンソールログに出力すると2という値が取得できます。
1行目の最終列はA3セルですので、想定通り取得できています。
A9セルを選択した場合
9行目には途中で空白のセルがあるので、その際に上記のコマンドを実行すると「B8」セルが最終行として取得されます。
「B8」セルではなく「B14」セルを取得したい場合は、列を指定して最終行を取得してみましょう!
最終列を取得する方法
1列目を選択した場合に、最終列を取得する方法は以下のコマンドです。
1WorkSheet.getRange('1:1')getUsedRange().getLastCell().getColumndex()
コマンドの実行内容は以下のようになります。
WorkSheet.getRange(‘1:1’)
getUsedRange()
getLastCell()
getColumnIndex()
上記のコマンド以外でも、A1セルから最終行を取得するで使用したコマンドでも最終行は取得できます。
1WorkSheet.getRange('1:1').getRangeEdge(ExcelScript.KeyboardDirection.right)
実行結果
コンソールログに出力すると2という値が取得できます。
1行目の最終列はA3セルですので、想定通り取得できています。
9列目を選択した場合
9列目には最終列の前に空白のセルがあるので取得方法に工夫が必要です。
最終列を取得するには、列選択から最終列を取得する際に紹介したfunctionです。
1WorkSheet.getRange('1:1')getUsedRange().getLastCell().getColumndex()
最後に
ここまで記事を読んでいただきありがとうございました。
これで、OfficeScriptsで最終行・最終列を取得することができるようになります。
本ブログでは、業務効率化を目指して主にPowerAutomateを使用して効率化の方法を紹介しております。
Teams・Excel・SharePointなど様々なツールと利用と連携できるPowerAutomateはとても便利ですのでこれを機に学習してみてください!