最終行の取得
ここではオフィススクリプトを使って、特定のワークシートの最終行を取得する方法を、サンプルコードと併せて解説します。
利用するメソッド
Section titled “利用するメソッド”ExcelScript.Worksheetオブジェクトに含まれているgetUsedRangeメソッドと、ExcelScript.Rangeオブジェクトに含まれているgetRowIndexメソッド、getRowCountメソッドを使用します。
/** * @param valuesOnly trueを指定した場合、値が入力されているセルのみを使用済みとみなす * @return 使用済みの範囲(ワークシート全体が空白の場合はundefined) */ExcelScript.Worksheet.getUsedRange(valuesOnly?: boolean): Range;
/** * @return 範囲の最初のセルの行番号(0から始まる) */ExcelScript.Range.getRowIndex(): number;
/** * @return 行の合計数 */ExcelScript.Range.getRowCount(): number;getUsedRangeメソッドは、値または書式が設定されているセルをすべて含む最小の範囲(使用済みの範囲)を返します。引数にtrueを指定すると、値が入力されているセルのみが対象になります。
使用済みの範囲は 1 行目から始まるとは限らないため、範囲の開始行(getRowIndexは 0 から始まる点に注意)に行数を足すことで、最終行の行番号を求めます。
例えば、以下のように 2 行目から 5 行目にデータが入力されているシートの場合、使用済みの範囲はA2:C5です。getRowIndexは 2 行目を表す1、getRowCountは4を返すため、1 + 4で最終行の5が求まります。
| Aインデックス 0 | Bインデックス 1 | Cインデックス 2 | |
|---|---|---|---|
| 1インデックス 0 | |||
| 2インデックス 1 | 日付 | 商品 | 数量 |
| 3インデックス 2 | 4/1 | リンゴ | 3 |
| 4インデックス 3 | 4/2 | ミカン | 5 |
| 5インデックス 4 | 4/3 | バナナ | 2 |
| 6インデックス 5 |
- Sheet1
A2:C5getUsedRange(true) の範囲(getRowIndex() は 1、getRowCount() は 4)A5:C5最終行(1 + 4 = 5 行目)
小さい数字は 0 から始まるインデックスです。
サンプルコード
Section titled “サンプルコード”シート名を指定して、データが入力されている最終行の行番号を取得するサンプルコードです。
対象シートが見つからない場合は、エラーをスローします。
function main(workbook: ExcelScript.Workbook) { /** 対象シート名 */ const sheetname = 'Sheet1'; /** 対象ワークシート */ const sheet = workbook.getWorksheet(sheetname);
if (!sheet) { throw `${sheetname}という名前のワークシートは存在しません`; }
/** 値が入力されている範囲 */ const usedRange = sheet.getUsedRange(true);
if (!usedRange) { console.log(`${sheetname}にはデータがありません`); return; }
/** ワークシートの最終行の行番号 */ const lastRow = usedRange.getRowIndex() + usedRange.getRowCount();
console.log(`最終行は${lastRow}行目です`);}最終列の取得オフィススクリプトを使って、特定のワークシートでデータが入力されている最終列を取得する方法を、サンプルコードと併せて解説します。