表が2つあるExcelシートに対して
- データの読み込み
- データの削除
- データの追記
などをどのように実装できるかを、各アクティビティの挙動を見ながら考えていきます。
今回は、「RowCount」メソッドの挙動について。
サンプルとして使うExcelは、次のようなもの。
※表が2つあるときはヘッダ行が1行目にないことも多いので、そのようなケースを想定しています。

※架空の部署・氏名であり、実際の人物や団体とは関係ありません。念のため…。
「最初/最後のデータ行を検索」というアクティビティがありますが、引数に列名を指定する必要があり、今回のケースではうまく使うことができませんでした。
※1行目にヘッダ項目がないため、「指定した列が存在しません」というエラーが表示される。
※2025年8月24日追記
「最初/最後のデータ行を検索」アクティビティでも最終行を取得することができましたので、最終行数の取得のページ下部に追記いたしました。
前回
①シート全体を指定した場合
まずはじめに、シート全体を指定した場合にどのようになるかを確かめます。
Excel.Sheet("Sheet1").RowCount
シート全体で見て、最後にデータが存在する行数を返しているようです。

②列を指定した場合
次は、いずれかの表のみを含む列範囲を指定した場合にどのようにRowCountされるかを試します。
-- 明細(左側)の表の列範囲を指定
Excel.Sheet("Sheet1").Range("B:F").RowCount
-- 部署別(右側)の表の列範囲を指定
Excel.Sheet("Sheet1").Range("H:J").RowCount
結果はこちら。
両方とも14。
図のように、列範囲を「H:J」と設定しても、2つの表をあわせた領域の最終行を返します。

③セルを指定した場合
今度は、下記のように表が始まるセルを指定してみます。
-- 明細(左側)の表が始まるセルを指定
Excel.Sheet("Sheet1").Range("B4").RowCount
-- 部署別(右側)の表が始まるセルを指定
Excel.Sheet("Sheet1").Range("H4").RowCount
指定したセルから数えてそれぞれの表が何行あるかを返しているように思えます。

しかし、次の図のように、表を左右入れ替えてみると、また違った結果が返ってきます。
(読み込む表)

-- 部署別(左側)の表が始まるセルを指定
Excel.Sheet("Sheet2").Range("B4").RowCount
-- 明細(右側)の表が始まるセルを指定
Excel.Sheet("Sheet2").Range("F4").RowCount
読み込み時の挙動も考えると、どうやら指定したセルから右下の領域の中でいちばん下にデータがある行を最終行として行数をカウントしているようです。

次回







