【VBA】列の一番下の値を取得して別ファイルに貼り付ける方法

目次

はじめに

今回は、VBAで列の一番下にある値を取得し、別のExcelファイルに貼り付ける方法について勉強しました。
使用環境は以下のとおりです。

  • 使用OS: Windows 10 Pro
  • バージョン: 20H2

背景

VBAプログラムを使って読み込んだファイルから、E列の一番下にあるデータを取得し、
それを別のExcelファイルの指定した位置(ここではK列)に貼り付けたいと考えました。

実際に行った処理

以下のコードで実現できました。

Workbooks(strFileName).Activate
row_end = Cells(Cells(Rows.Count, "E").End(xlUp).Row, "E").Value
ThisWorkbook.Activate
e = Cells(Rows.Count, "K").End(xlUp).Row + 1
Range("K" & e).Select
ActiveCell.Value = row_end

コードの解説

1行目:
対象のExcelファイルをアクティブにしています。
strFileNameには、読み込んだファイル名が格納されています。

2行目:
E列の一番下の値を取得しています。

  • Rows.Countは、ワークシート上の最終行(通常は1048576行目)を意味します。
  • Cells(Rows.Count, "E").End(xlUp).Rowは、E列の最終データ行番号を取得します。
  • さらにその位置のセルのを読み取って、row_endに代入しています。

※この処理は、Excel VBAで最終データ行を探すときの定番の書き方です。

3行目:
**貼り付け先となるExcelファイル(ThisWorkbook)**をアクティブに切り替えます。

4行目:
K列の一番下に新たなデータを追加するための行番号を取得しています。
現在のK列最終データの1行下を探すため、+1しています。

5行目:
追加する場所(K列の最終行+1の位置)を選択しています。

6行目:
先ほど取得したrow_endの値を、アクティブセル(つまり指定したK列のセル)に貼り付けています。

注意点

  • .Activate.Selectは動作確認用には便利ですが、省略して直接セルに値を代入するほうが実務では推奨されます。
  • ファイルを跨いで操作する場合、ファイルの開き忘れや指定ミスに注意する必要があります。

(例:本番コードでは、Activateを使わずに、ブック名+シート名+セルを直接指定する方法が安全です。)

まとめ

  • Cells(Rows.Count, "列").End(xlUp).Rowで、列の一番下のデータ行を取得できる。
  • Valueを使って、実際のデータを取得する。
  • 貼り付ける場合は、ターゲットファイルに切り替え、最終行を探して追加する。

今回の作業を通じて、列の最終データ行の扱い方と、別ファイルへのデータ転記の基本操作を確実に理解できました。
今後も実践を重ね、よりスムーズに複数ファイルを扱えるようにしていきたいと考えています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次