Excel VBA 範囲を別のシートにコピーする(8つの最も簡単な方法)

  • これを共有
Hugh West

この記事では、Excel VBAで範囲を別のシートにコピーするさまざまな方法を紹介します。

説明を簡単にするために、特定の人物の個人情報を表すデータセットをサンプルとして使用する。 データセットには4つのカラムがあり、これらのカラムは 名前、苗字、フルネーム 電子メール .

練習用ワークブックをダウンロードする

VBA 範囲を別のシートにコピーする.xlsm

Excel VBA 範囲を別のシートにコピーする8つの方法

1.書式付きで範囲を別のシートにコピーする

をしたいときは、いつでも コピー あるシートから別のシートへの範囲と フォーマット を使えば簡単にできます。 ブイビーエー .

ここで、私は コピー の範囲にある。 データセット 敷き詰める WithFormat シートを使用します。

手続きを開始しましょう。

まず デベロッパー タブ>>選択 ビジュアルベーシック

を使用することもできます。 ALT + F11 をキーボードで開いてください。 ブイビーエー エディタがあります。

次に、次のような名前の新しいウィンドウが表示されます。 Microsoft Visual Basic for Applications。

そこから インサート >> 選択 モジュール .

A モジュール が開いたら、開かれた場所に次のコードを入力します。 モジュール .

 Sub Copy_Range_withFormat_ToAnother_Sheet() Range("B1:E10").Copy Worksheets("WithFormat").Range("B1:E10") End Sub 

ここで、宣言したのは サブプロシジャ 範囲指定書式で別のシートにコピーする。

レンジで撮った B1:E10 をクリックすると、既存のシートからシート名にコピーされます。 WithFormat .

ここで、私が使ったのは コピー メソッドを使用して、選択した範囲をコピーします。 コピー メソッドは、任意の範囲を フォーマット .

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>>から マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 範囲指定書式で別のシートにコピーする。 の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

したがって、それは コピー で選択した範囲を フォーマット を、私が選択した新しいシート( WithFormat) .

2.VBA フォーマットなしで範囲を別のシートにコピーする

することも可能です。 コピー を使わずに、範囲を別のシートに フォーマット を使うことで ブイビーエー .

ここで、私は コピー の範囲にある。 データセット 敷き詰める フォーマットなし シートを使用します。

手続きを開始しましょう。

では、開いてみてください。 デベロッパー タブ>> 選択 ビジュアルベーシック ( を使用します。 ALT + F11)

次に開くのは Microsoft Visual Basic for Applications。

次に、以下を開きます。 インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_WithoutFormat_Toanother_Sheet() Range("B1:E10").Copy Sheets("WithoutFormat").Range("B1").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub. 

ここで、宣言したのは サブプロシジャ 書式のない範囲を別のシートにコピーする

レンジで撮った B1:E10 をクリックすると、既存のシートからシート名にコピーされます。 フォーマットなし .

ここで、私が使ったのは コピー メソッドで選択した範囲をコピーしていましたが、さらに 貼り付け:=xlPasteValues において ペーストスペシャル を貼り付けるだけとなるように 価値観 は、フォーマットではなく、選択された範囲の

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>> より マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 書式なしの範囲を別のシートにコピーする でワークブックを選択し、さらに のマクロ .

最後に 実行 選択された マクロ .

このように コピー を選択した場合、選択した範囲のみ 価値観 ノー フォーマット .

3.書式と列幅を指定して範囲を別のシートにコピーする

したい場合があります。 コピー 選択した範囲をそのままにすることができます。 コピー を持つ範囲 フォーマット 列の幅 .

ここで、私は コピー の範囲にある。 データセット 敷き詰める フォーマットと列幅 シートを使用します。

を使用してタスクを実行する手順を見るには ブイビーエー ,

まず デベロッパー タブ>>選択 ビジュアルベーシック

を使用することもできます。 ALT + F11 をキーボードで開いてください。 ブイビーエー エディタがあります。

次に、新しいウィンドウで Microsoft Visual Basic for Applications。

そこで、オープン インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth() Range("B1:E10").Copy Destination:=Sheets("Format & ColumnWidth").Range("B1") Range("B1:E10").Copy Sheets("Format & ColumnWidth").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths, _ Operation:=xlNone, SkipBlanks:=False,Transpose:=False End Sub. 

ここで、宣言したのは サブプロシジャ 範囲を別のシートにコピーし、書式と列の幅を指定する

レンジで撮った B1:E10 既存のシートからコピー先のシート名へコピーする場合 フォーマットと列幅 .

ここで、私が使ったのは コピー メソッドを使って選択範囲をコピーしています。 ペーストスペシャル メソッドに言及したところ 貼り付け:=xlPasteColumnWidths と一緒に選択範囲を貼り付けるようにします。 フォーマット 列の幅 .

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>>から マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 範囲を別のシートにコピーし、フォーマットとカラム幅を指定する でワークブックを選択し、さらに のマクロ .

最後に 実行 選択された マクロ .

その結果 コピー で選択した範囲を フォーマット 列の幅 .

4.VBA 数式で範囲を別のシートにコピーする

データセットにコピーしたい数式がある場合、心配はいりません!以下の範囲をコピーすることができます。 を、数式をそのままに別のシートにコピーします。

ここで、私は コピー の範囲にある。 データセット 敷き詰める WithFormula シート

手続きを開始しましょう。

まずはじめに デベロッパー タブ>>選択 ビジュアルベーシック ( を使用することもできます。 ALT + F11 キーボード)

次に開くのは Microsoft Visual Basic for Applications。

そこから インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_withFormula_ToAnother_Sheet() Range("B1:E10").Copy Sheets("WithFormula").Range("B1").PasteSpecial Paste:=xlPasteFormulas, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub. 

ここで、宣言したのは サブプロシジャ 式を含む範囲を別のシートにコピーする

レンジで撮った B1:E10 既存のシートからコピー先のシート名へコピーする場合 WithFormula .

ここで、私が使ったのは コピー メソッドを使って選択範囲をコピーしています。 ペーストスペシャル メソッドに言及したところ 貼り付け:=xlPasteFormulas を搭載するようにしました。 計算式 を選択した範囲と一緒に表示します。

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>> より マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 式を含む範囲を別のシートにコピーする の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

このように コピー 選択されたすべてのセル範囲を 計算式 .

類似の読み物。

  • VBA範囲オフセットの使い方(11の方法)
  • Excelで範囲内の各セルをVBAで処理する(3つの方法)
  • ExcelでVBAのRangeオブジェクトを使うには(5つのプロパティ)

5.オートフィットを使用した範囲を別のシートにコピーする

一方 コピー の範囲を別のシートに移動することもできます。 オートフィット メソッドを使用します。 ブイビーエー まで オートフィット コピーした範囲を新しいシートにコピーします。

ここで、私は コピー の範囲にある。 データセット 敷き詰める オートフィット シート

手続きを開始しましょう。

まず デベロッパー タブ>> 選択 ビジュアルベーシック

を使用することもできます。 ALT + F11 をキーボードで開いてください。 ブイビーエー エディタがあります。

次に、ウィンドウを開くと Microsoft Visual Basic for Applications。

次に、以下を開きます。 インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_withFormat_AutoFit() Sheets("Dataset").Select範囲("B1:E10").CopySheets("AutoFit").Select範囲("B1").Select ActiveSheet.Paste Columns("B:E").AutoFit End Sub 

ここで、宣言したのは サブプロシジャ Copy_Range_withFormat_AutoFit

まず、ワークシートを選択しました データセット .その後、レンジで撮影 B1:E10 という名前のシートからコピー先のシートにコピーします。 オートフィット .

ここで、私が使ったのは コピー メソッドで選択した範囲をコピーし オートフィット メソッドは、与えられたカラムをオートフィットします。 B:E .

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>> より マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 Copy_Range_withFormat_AutoFit の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

したがって、それは コピー 選択した範囲を新しいシートに移動し、さらに オートフィット を表示します。

6.VBA 範囲を別のワークブックにコピーする

必要であれば、次のこともできます。 コピー あるシートから別のワークブックの別のシートへ範囲を指定する。

ここで、私は コピー の範囲にある。 データセット 敷き詰める シート1 書籍1 ワークブック

手続きを開始しましょう。

まず デベロッパー タブ>> 選択 ビジュアルベーシック(Y を使用することもできます。 ALT + F11 キーボード)

すると、次のような画面が表示されます。 Microsoft Visual Basic for Applications。

次に、以下を開きます。 インサート >> 選択 モジュール .

A モジュール が開いたら、開かれた場所に次のコードを入力します。 モジュール .

 Sub Copy_Range_WithFormat_Toanother_WorkBook() Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset").Range("B3:E10"). _ コピー Workbooks("Book1").Worksheets("Sheet1").Range("B3") End Sub 

ここで、宣言したのは サブプロシジャ 形式を持つ範囲を別のワークブックにコピーする

レンジを撮りました B3:E10 シート名から データセット 既存のシートから新しいワークブックの名前にコピーする場合 書籍1 とシート名 シート1 .

ここで、私が使ったのは コピー メソッドを使用して、選択した範囲を新しいワークブックにコピーします。

最後に セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>> から マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 形式を持つ範囲を別のワークブックにコピーする の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

今なら コピー から選択した範囲を表示します。 データセット シートを別のワークブックにコピーします。

7.範囲を別のシートの最終行にコピーする

いずれにせよ、もしあなたが コピー 特定のセルまたは最後のセルから別のシートに範囲を移動するには、次のようにします。 ブイビーエー .

手順に入る前にお伝えしたいのは、新たに2枚のシートを撮影したことです。 フルネーム、Eメール 住所 .

を観察してみよう。 データセット2 シートが先です。

以下は、その内容です。 最後のセルの下 シートを使用します。

ここで、私は コピー の範囲にある。 データセット2 敷き詰める 最後のセルの下 ただし、最初の空白でないセルから。

まずはじめに デベロッパー タブ>> 選択 ビジュアルベーシック

次に開くのは Microsoft Visual Basic for Applications。

次に、以下を開きます。 インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_BelowLastCell_AnotherSheets() Sheets("Dataset2").Select lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Range("A2:C" & lr).Copy Sheets("Below Last Cell").Select lrAnotherSheet = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Cells(lrAnotherSheet + 1, 1).Select ActiveSheet.Paste Columns("A:C").AutoFit Endサブ 

ここで、宣言したのは サブプロシジャ Copy_Range_BelowLastCell_AnotherSheets

まず、シートを選択 データセット2 を使用し、その後に メソッドでカウントします。 最終段 で、カウントされた行を保持します。 ラー .

そして、レンジを撮影 A2:C & lr 既存のシートからコピー先のシート名へコピーする場合 最後のセルの下 .

今回も使用しました。 メソッドでカウントします。 最終段 という名前の別のシートの 最後のセルの下 で、カウントされた行を保持します。 lrAnotherSheet .

ここで、私が使ったのは コピー メソッドで選択した範囲をコピーし オートフィット メソッドは、与えられたカラムをオートフィットします。 A:C .

最後に 保存 を実行し、ワークシートに戻ってください。

次に 表示 タブ>>から マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 Copy_Range_BelowLastCell_AnotherSheets の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

したがって、それは コピー を選択すると、選択された範囲が表示されます。 貼り付け を別のシートの最後の行から取得します。

8.VBAで範囲を別のワークブックの最終行にコピーする

を希望する場合 コピー の範囲を別のワークブックのシートの最後の行に移動することもできます。 ブイビーエー .

ここで、私は コピー の範囲にある。 データセット2 敷き詰める シート1 書籍2 ただし、最初の空白でないセルから。

手順を開始するには

まず デベロッパー タブ>> 選択 ビジュアルベーシック

を使用することもできます。 ALT + F11 をキーボードで開いてください。 ブイビーエー エディタがあります。

次に、新しいウィンドウで Microsoft Visual Basic for Applications。

そこから インサート >> 選択 モジュール .

A モジュール が開いたら、開いたところに次のコードを入力してください。 モジュール .

 Sub Copy_Range_BelowLastCell_To_Another_Workbook() Dim wsCopy As Worksheet Dim wsDestination As Worksheet Dim lCopyLastRow As Long Dim lDestLastRow As Long Set wsCopy = Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset2") Set wsDestination = Workbooks("Book2.xlsx").Worksheets("Sheet1") lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row lDestLastRow =wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1).Row wsCopy.Range("A2:C" & lCopyLastRow).コピー wsDestination.Range("A" & lDestLastRow) End Sub 

ここで、宣言したのは サブプロシジャ コピー_範囲_下_最後のセル_別のワークブックに どこ wsCopy wsDestination アール ワークシート のタイプになります。 lCopyLastRow lDestLastRow アール ロング のタイプになります。

まず、中古 セット で、コピーするシートとコピー先のシートの変数を設定します。

次に、使用した メソッドを使用して、列のデータに基づいて最後の行を検索します。 A をコピー範囲に入れる。

今回も使用しました。 列のデータに基づいて最初の空白行を求める方法 A を使用しています。 オフセット を1つ下に移動させる。

最後に コピー機 のデータ。 データセット2 のシートがあります。 Excel VBA 範囲を別のシートにコピーする.xlsm のワークブックをコピー先に送る。 シート1 ワークブック Book2.xlsx .

今すぐ セーブ を実行し、ワークシートに戻ってください。

次に 表示 タブ>>から マクロ >> 選択 マクロを見る

➤ A ダイアログボックス がポップアップ表示されます。

では、その中から マクロ名 を選択します。 コピー_範囲_最後のセルより下_別のワークブックに の中のワークブックも選択します。 のマクロ .

最後に 実行 選択された マクロ .

したがって、それは コピー 選択した範囲を既存のシートから別のワークブックの最後の行に移動します。

プラクティス部門

これらの説明されたExcelの方法を練習するために、ワークブックに練習シートを用意しました ブイビーエー 範囲を別のシートにコピーする。

結論

今回は、8種類の簡単で手軽なExcelの方法を解説しました。 ブイビーエー 範囲を別のシートにコピーする。 これらの異なる方法は、1つのシートから別のシートへ、また1つのシートから別のワークブックへ範囲をコピーするのに役立ちます。 最後になりましたが、あなたが提案、アイデア、およびフィードバックの任意の種類がある場合は、以下のコメントダウンお気軽にお問い合わせください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。