コンテンツにスキップ

最終行の取得

ここではオフィススクリプトを使って、特定のワークシートの最終行を取得する方法を、サンプルコードと併せて解説します。

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インデックス 0Bインデックス 1Cインデックス 2
1インデックス 0
2インデックス 1日付商品数量
3インデックス 24/1リンゴ3
4インデックス 34/2ミカン5
5インデックス 44/3バナナ2
6インデックス 5
  • Sheet1
  • A2:C5getUsedRange(true) の範囲(getRowIndex() は 1、getRowCount() は 4)
  • A5:C5最終行(1 + 4 = 5 行目)

小さい数字は 0 から始まるインデックスです。

シート名を指定して、データが入力されている最終行の行番号を取得するサンプルコードです。

対象シートが見つからない場合は、エラーをスローします。

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}行目です`);
}