Excelで特定列の最終行を取得し、別の列で範囲使用する

StudioXにて、ExcelのB列の最終行を「最初/最後のデータ行を検索」の『最後の行の番号を保存』で取得しました。
このB列の最終行を使用し、C5からB列の最終行があるC列の行まで、C5の数式を「範囲にコピー/貼り付け」したいです。

"C5:C***"のように貼付先を範囲指定したいのですが、詳細式エディターの記述がわかりません。
下記に"C5:"の部分をどう付け加えたらよいでしょうか?

Excelファイル.Sheet(“シート名”).Range(Saved.Values(Of Int32)(“B列最終行”).ToString)

こんにちは

StudioXのバージョンはいくつでしょうか?

基本的には

Excel.Sheet("SheetName").Range("C5:C"+最終行のint32変数.ToString)

になると思います。

1 Like

バージョンは2020.10です。
最新バージョンだと記述も変わってきますか?

教えていただいた通りに記述すると警告が消え実行ができました。
ありがとうございます!
ただ、最終行検索のところでランタイムエラーが起こるようです。
下記の記述でおかしいところはありますか?

「Excel ファイルを使用」
Excelファイル名:制御ファイル.xlsx
参照名を指定:制御
┗「Excel の繰り返し(各行)」
繰り返し名:row
対象範囲:[制御]設定
:ballot_box_with_check:先頭行をヘッダーとする
┗「Excel ファイルを使用」
Excelファイル名:[row]出力先
参照名を指定:マスタ
:ballot_box_with_check:テンプレートファイル:テンプレート.xlsx
┗「スイッチ」
Expression:[row]ペースト先
┗Case A
「最初/最後のデータ行を検索」
ソース:マスタ.Sheet(row.ByField(“ペースト先”)).Range(“B”)
列の名前:B
最後の行の番号を保存:B最終行
(オプション 入力
スキップする空白行:3
最初の行オフセット:5)※始めたいB列がB5からで、B1B3B4が空白でB2に値ありのため

「範囲をコピー」
ソース:マスタ.Sheet(row.ByField(“ペースト先”)).Range(“C5”)
対象:マスタ.Sheet(row.ByField(“ペースト先”)).Range(“C5:C”+Saved.Values(Of Int32)(“B最終行”).ToString)

教えていただいた記述は他のところで難なく実行できたので、この部分の最終行検索の記述がおかしいのでしょうか?

こんにちは

異なります。最新版ではSaved.Valuesのような表現はすでに使われず、単純に変数を扱います。

ただ、最終行検索のところでランタイムエラーが起こるようです。
下記の記述でおかしいところはありますか?

ランタイムエラーということは扱うデータによっても影響し、何を実現したいかも
よくわかりませんので上記だけでは判別は困難かと思います。
可能でしたら対象データ含めたプロジェクト一式を共有いただけると良いかもしれません。

最新版はstudioXでも変数が使用できるんですね。
最新版に移行しようかと思います。
プロジェクト一式の共有は難しかったので、色々弄っていたらなんとかなりました。
「最初/最後のデータ行を検索」
ソース:マスタ.Sheet(row.ByField(“ペースト先”)).Range(“B”)
を、
マスタ.Sheet(row.ByField(“ペースト先”))
に変更したら正常に動きました。

相談に乗っていただきありがとうございます!
助かりました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.