エクセルはデータ解析・管理を行うツールとして非常に機能が高く、上手く使いこなせると業務を大幅に効率化できるため、その扱いに慣れておくといいです。
ただ機能が充実しているあまり初心者にとっては処理方法がよくわからないことも多いといえます。
例えばエクセルのVBA(マクロ)にて最終行を取得したり、別シートの最終行の下(次)の行に貼り付けする方法について理解していますか。
ここではエクセルのVBA(マクロ)にて最終行を取得したり、別シートの最終行の下(次)の行に貼り付け等をする方法について解説していきます。
エクセルのVBA(マクロ)にて最終行の次の行に任意の数値(文字)を入力する方法
それではまず以下のサンプルデータうを用いて、VBA(マクロ)にて最終行の次の行に任意の数値(文字)を入力する方法について確認していきます。
今回はVBA(マクロ)にて上データの最終行の次のセル(行)に100と入れてみます。
サンプルコードは以下の通りです。
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
Range(“A” & tugi).Select
ActiveCell.FormulaR1C1 = “100”
End Sub
上のコードの意味を確認していきます。
Sub 最終行の次の行の100()
→マクロ名を定義しています
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
→ tugi : tugiという名前にて、
(Cells(Rows.Count, “A”)):A列の最も下(シートの最終行)を選択
(.End(xlUp).:上に上がり、はじめてデータがある場所(つまりデータがある最終行)
Row :行番号を取得
+1 :その行番号の次の行=最終行の次の行とする
と処理しています。
さらに
Range(“A” & tugi).Select
→Range(“A” & tugi).:A列の最終行の次の行を
.Select :選ぶ
ActiveCell.FormulaR1C1 = “100”
セルをアクティブにし、R1C1形式でここに100を入れる
最後に
End Sub
終了
という意味になります。
VBA画面を閉じ、マクロを実行させましょう。
これ操作によって最終行の次の行に100と入るのです。
最終行をコピーし最終行の次の行に貼り付け【VBA・マクロ】
上では最終行の次の行に任意の文字・数字を入れる方法を確認しましが、今度は同じシート内にて最終行の中身をコピーし、最終行の次の行にコピー(貼り付け)させていきます。
サンプルコードは以下の通りです。
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
last = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & last).Copy
Range(“A” & tugi).PasteSpecial
End Sub
上のコードの意味について解説していきます。
Sub 最終行コピー後に最終行の次の行に貼り付け()
→マクロ名を定義しています
次に
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
→ tugi : tugiという名前を定義します
= Cells(Rows.Count, “A”) :シートのA列の最終行に移動します
.End(xlUp).Row + 1:そこから上に上がったセルの次(データの最終行の次の行)のセルの行番号を取得
続いて、
last = Cells(Rows.Count, “A”).End(xlUp).Row
→上と同様 last という定義で最終行の行番号を取得
Range(“A” & last).Copy
→A列のデータの最終行の中身をコピー
Range(“A” & tugi).PasteSpecial
→A列の最終行の次の行にコピー(貼り付け)
End Sub → 終了
と処理しているわけです。
VBAの基礎については別途まとめていますが、上のコードの日本語訳を一つずつ理解していけばマクロを書きやすくなります。
このマクロを実行すると、元の最終行の「e」が最終行の次の行にコピー(貼り付け)されるわけです。
なお、関数にて最終行の中身を取得する方法は以下で記載していますので参考にしてみてください。
別シートの最終行をコピーし、元のシートの最終行の次の行に貼り付け【VBA:マクロ】
上では同じシートにおけるVBAのため、SHEETの定義は使用していませんでしたが
・別シートの最終行の中身を取得・コピーし、
・元のシートの最終行の次の行に貼り付ける(以下図)
場合等には、シート自体の定義も加えるといいです。
サンプルコードは以下の通りです。
Sub 別シートの最終行コピー後に最終行の次の行に貼り付け()
Sheets(“Sheet2”).Select
last = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & last).Copy
Sheets(“Sheet1”).Select
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
Range(“A” & tugi).PasteSpecial
End Sub
上のコードの意味を確認していきます。
Sub 別シートの最終行コピー後に最終行の次の行に貼り付け()
→マクロの名前の定義
Sheets(“Sheet2”).Select
→別のシートを選択
last = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & last).Copy→データがある最終行の行番号を取得し、中身をコピー
Sheets(“Sheet1”).Select
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
Range(“A” & tugi).PasteSpecial→元のシートを指定し、最終行の次を選択し、上でコピーした中身を貼り付け
End Sub → 終わり
となるわけです。
マクロを実行しましょう。
これで別シートの最終行をコピーし、最終行の次のセルに貼り付け(コピー)することが完了しました。
VBA(マクロ)にて別ブックの最終行をコピーし最終行の次の行に貼り付ける方法【ブックをまたいだコピー】
エクセルのVBAでは別ブックの最終行をコピーし、元のブックの最終行の次の行に張り付け(ブックをまたいだコピー)することも可能です。
サンプルコードは以下の通りです(なおブックをまたいだコピーを行うためのVBA記載方法にはさまざまなものがあり、その中の1例を確認していきます。
この時、両ブックとも予め開いておきましょう。
Workbooks(“VBA練習用2.xlsm”).Activate
Sheets(“Sheet3”).Select
last = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & last).Copy
Workbooks(“VBA練習用.xlsm”).Activate
Sheets(“Sheet1”).Select
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
Range(“A” & tugi).PasteSpecial
End Sub
このコードの意味を解説していきます。
Sub 別ブックの最終行コピー後に最終行の次の行に貼り付け()
→名前の定義
Workbooks(“VBA練習用2.xlsm”).Activate
→ブック(VBA練習用2)をアクティベート
Sheets(“Sheet3”).Select
last = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & last).Copy→シート3の最終行をコピー
Workbooks(“VBA練習用.xlsm”).Activate
→ブックVBA練習用のブックを選択
Sheets(“Sheet1”).Select
tugi = Cells(Rows.Count, “A”).End(xlUp).Row + 1
Range(“A” & tugi).PasteSpecial
→シート4の最終行の次のセルに貼り付け
End Sub
→終了
このようにしてブックをまたいだコピーと貼り付けが完了となるのです。
ただマクロではさまざまな記載方法があるため、あくまでコードは一例と覚えておきましょう。
まとめ エクセルで別シートの最終行をコピーし、元のシートの最終行の次の行に貼り付け【VBA:マクロ】
ここでは、エクセルのVBA(マクロ)にて最終行の取得・コピーや最終行の次のセルに貼り付け・入力等をする方法について解説しました。
基本的には、一つ一つのコードの意味を理解し流れを考えてスクリプトを組めばいいです。
エクセルでのさまざまな処理になれ、日々の業務を効率化させていきましょう。
コメント
[…] […]