
Excelの最終行を取得する方法を説明します。
Power Automate Desktop(PAD)でExcelを操作していると、
- Excelの最終行まで繰り返し処理したい
- データが入力されている最後の行を取得したい
- Excelの最終行にデータを追加したい
- Excelのデータを最終行まで読み取りたい
といったことがあります。
このような処理を行う場合、Excelの最終行を取得しておくと便利です。
Excelの最終行を取得する方法
PADには、Excelワークシートの最初の空の行を取得するアクションがあります。
「Excelワークシートから最初の空の列や行を取得」アクションを使用すると、データが入力されている範囲の次の空行を取得できます。
例えば、Excelに5行目までデータが入力されている場合、
1行目 データ
2行目 データ
3行目 データ
4行目 データ
5行目 データ
6行目 空白
となっているため、取得される最初の空行は「6」になります。
そのため、最終行を取得する場合は、取得した値から1を引きます。
最終行 = FirstFreeRow - 1
それでは、実際に設定してみます。
1.Excelを起動する
まず、対象となるExcelファイルを開きます。
アクションから「Excelの起動」を追加してください。
Excelファイルを指定して、対象のExcelを起動します。

Excelを起動すると、Excelインスタンスの変数が作成されます。
デフォルトでは、
%ExcelInstance%
という変数が作成されます。
この変数は、この後のExcel操作で使用します。
2.最初の空の列や行を取得する
次に、「Excelワークシートから最初の空の列や行を取得」アクションを追加します。

このアクションでは、現在のワークシートにある最初の空の行と列を取得できます。
基本的には、設定を変更せずにそのまま使用できます。
実行すると、以下のような変数が作成されます。
%FirstFreeColumn%
%FirstFreeRow%
今回使用するのは、
%FirstFreeRow%
です。
例えば、Excelの5行目までデータが入力されている場合、

FirstFreeRow = 6
となります。
3.最終行を取得する
「FirstFreeRow」は最終行そのものではありません。
データが入力されている最後の行の「次の行」が取得されます。
そのため、最終行を取得するには1を引きます。
次に「変数の設定」アクションを追加します。
変数には、分かりやすいように、
LastRow
と入力します。
値には、
%FirstFreeRow - 1%
と入力します。

これで、
%LastRow%
にExcelの最終行が保存されます。
例えば、
FirstFreeRow = 6
だった場合、
LastRow = 5
となります。
最終行を使ってExcelを読み取る
取得した最終行は、Excelの読み取りなどに利用できます。
例えば、1行目から最終行までを読み取りたい場合は、「Excelワークシートから読み取る」アクションを使用します。
セル範囲を指定する場合、
先頭列:1
先頭行:1
最終列:必要な列
最終行:%LastRow%
のように設定できます。

これなら、Excelのデータが増減しても、毎回最終行を手動で変更する必要がありません。
例えば、あるときは100行、別の日には150行のデータがあったとしても、
%LastRow%
を使用すれば、その時点の最終行まで処理できます。
最終行にデータを追加する
最終行の次の行にデータを追加したい場合は、「Excelワークシートから最初の空の列や行を取得」アクションで取得した「%FirstFreeRow%」が使用できます。
例えば、現在の最終行が100行目だった場合、
FirstFreeRow = 101
となるため、101行目に新しいデータを追加できます。
指定した列の最終行を取得する
「Excelワークシートから最初の空の列や行を取得」では、ワークシート全体を基準に最初の空行を取得できます。
一方で、
「Excelワークシートから列における最初の空の行を取得」

というアクションもあります。
こちらは、指定した列を基準に最初の空の行を取得する方法です。
例えば、A列のデータが、

となっている場合、「列」にAを指定すると、A列の最初の空の行を取得できます。
このアクションで作成される変数は、
%FirstFreeRowOnColumn%
です。
この値も、基本的には最終行そのものではなく、最終データの次の行になります。
そのため、最終行を取得する場合は、
%FirstFreeRowOnColumn - 1%
とします。
この場合は、
FirstFreeRowOnColumn = 6
FirstFreeRowOnColumn - 1 = 5
となります。

範囲が変わるような表に対してはよく使用します。
使ってみると分かってくるので、ぜひ試してみてください。


