Excel VBAを使って複数のセルを別のシートへコピー&ペーストする方法

このQ&Aのポイント
  • Excel VBAを使用すると、複数の離れたセルをコピーして別のシートへリンク付け貼り付けを実行することができます。
  • コピー元のセルと貼り付け先のセルのフォーマットが異なる場合でも、VBAを使ってセルのコピーと貼り付けを自動化できます。
  • マクロを作成しておくことで、同じ作業を繰り返し行う必要がなくなり、効率的にデータを処理することができます。
回答を見る
  • ベストアンサー

複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

その後の補足が無いということは、上手くいっているということでしょうか? 同一ブック内でリンク貼り付けを「マクロの記録」して得られたコードを編集してみました。 Sub testリンク貼り付け1()   Dim rc As Range   Dim rp As Range   Dim i As Long      Set rc = Sheets("Sheet1").Range("A1, B2, C3, D4:F4")   Set rp = Sheets("Sheet2").Range("E1, F2, G3, B4:D4")   Sheets(rp.Parent.Name).Select   For i = 1 To rc.Areas.Count     rc.Areas(i).Copy     rp.Areas(i).Select     ActiveSheet.Paste link:=True   Next i   Application.CutCopyMode = False End Sub もう一例、リンク貼り付けではなく、リンク式を入力してみました。 Sub testリンク式1()   Dim rc As Range   Dim rp As Range   Dim i As Long      Set rc = Sheets("Sheet1").Range("A1, B2, C3, D4:F4")   Set rp = Sheets("Sheet2").Range("E1, F2, G3, B4:D4")   For i = 1 To rc.Areas.Count     rp.Areas(i).Formula = _       "=" & rc.Parent.Name & "!" & rc.Areas(i).Item(1).Address(False, False)   Next i End Sub

HNK1001
質問者

お礼

御礼が遅くなってしまい申し訳ございませんでした。 教えていただきましたリンク式を試してみたところ、同一ブッックで希望通りの結果を得られました。 もしよろしければ、別ブックの場合を教えていただけますでしょうか? 例えば「C:\Book1.xls」の(Sheet1)のセル(A1, B2, C3, D4:F4)をコピーし、「C:\test\Book2.xls」の(Sheet2)のセル(E1, F2, G3, B4:D4)へリンク貼付けを行う場合の記述は、どのようになりますか? 度々お手数お掛けして大変恐縮ではございますが、宜しくお願い致します。

HNK1001
質問者

補足

例えば「C:\Book1.xls」の(Sheet1)のセル(A1, B2, C3, D4:F4)をコピーし、「C:\test\Book2.xls」の(Sheet2)のセル(E1, F2, G3, B4:D4)へリンク貼付けを行う場合の記述は、どのようになりますか? 度々お手数お掛けして大変恐縮ではございますが、宜しくお願い致します。

その他の回答 (3)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

相対的なセルを参照する(Offsetプロパティ) http://www.moug.net/tech/exvba/0050091.htm 上記ページを参考にしてください。 上手くいかない場合、書かれたコードを提示してください。 エラーがでるなら、エラーコードと内容も合わせて教えてください。 A1,B2,C3 と E1,F2,G3 D4:F4 と B4:D4 ではOffset量が違っているので注意してください。 # 先に回答されているhige_082さんの提案は無視ですか?

HNK1001
質問者

お礼

早々のご回答をありがとうございました。 早速、参考にさせていただき試してみますね。 また質問等をさせていただくこともあるかと思いますが、宜しくお願い致します。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

D4:F4 と B4:F4 の形(セル数)が違っているのでコピーできないと思います。 どちらかが間違っているのでしょうか? 形が同じなら、Offsetしてやれば良いとおもいます。

HNK1001
質問者

補足

ご指摘ありがとうございます。 記載間違いで、正しくは「D4:F4 → B4:D4」となります。 大変失礼いたしました。 よろしければ、offsetの記述例を教えて頂けると幸いでございます。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

質問の手順をマクロの記録で記録してみては 詳しい操作は「マクロの記録」で検索してみてください 沢山のサイトで説明されています

HNK1001
質問者

お礼

早々のご回答をありがとうございました。 手動で1セルずつ地道に「マクロの記録」をする方法もありますね。

関連するQ&A

  • 離れたセルのリンク貼り付けを行うためのマクロについて

    ブック(1)のシート(1)にある複数の離れたセル(B2,D2,C3,F3,B4:F4)をコピーし、別ブックのシート(1)のセル(B2,D2,C3,F3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)はイントラの共有フォルダ上の同一階層に置いてあります。 このブック(1)と同一フォーマットのブックが複数存在し、上記同様にブック(2)の離れたセルをコピーして別ブックのシート(2)のセルへリンク貼り付け。 続いて、ブック(3)の同じセルをコピーし別ブックのシート(3)へリンク貼り付けと言うように、同じセルをコピーし別シートの同じセルへリンク貼り付けの作業を繰り返し行います。 まったく同じ位置のセルをコピー&リンク貼り付けを繰り返し行いたいので、マクロを使って自動実行させたいと思っています。 離れたセルのリンク貼り付けは出来ないのかもしれないですが、アドバイスを頂けると助かります。 宜しくお願い致します。

  • エクセルで特定の複数セルを選択し、別ブックへ一度に「リンク貼り付け」するマクロは?

    エクセルで作成したファイル(1)で、特定の複数セル(連続していないセル)を選択し、まったく同じフォーマットの別ふぁいる(2)へ一度に「リンク貼り付け」する方法があれば教えて頂きたいと思っております。 【BOOK(1) - シート】をコピー ---------------------------------------------------------------- ----------------------   A    B C      D     E FG   H  1 NO    名前   ランク  概要    備考 2 11   あああ      A     ****   ○○○  3 55     いいい     B     ****   △△△   4 77    ううう     C     ****   □□□     ---------------------------------------------------------------- ---------------------- 【BOOK(2) - シート】へリンク貼り付け ---------------------------------------------------------------- ----------------------   A    B C      D      E FG   H  1 NO    名前   ランク  概要    備考 2 11   あああ          ****   3  4       ううう     C     ---------------------------------------------------------------- ---------------------- 列BとC、列EとFとGはセルの結合をしております。 BOOK(1)のセル「A2」「BC2」「BC4」「D4」「EFG2」だけをコピーし、 BOOK(2)の同一セルへリンク貼り付けを行う。 コピーするセルが飛び石のように離れており、2つ以上のセルが結合している列があったりします。 複数のBOOKがあり、すべてのBOOKで上記と同一セルを「リンク貼り付け」する場合に 一度にまとめて実行できるようなVBAやマクロで実現可能な方法があれば教えて下さい。 (勉強も兼ねているため、マクロ記述に補足説明があると助かります) 現在の所、連続しているセルはまとめてリンク貼り付けができるのですが、離れているセルは1つずつ選択して貼り付けております。 この別ファイルへのリンク貼り付け作業が大量にあり、時間がかかるため大変困っております。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • 可視セルへのコピー マクロ

    次のように、可視セルから可視セルへコピーしたいです。 (元の状態) A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150 dさん 済    100 eさん 未    120 fさん 済    250 gさん 未    300 hさん 未    210 この状態をB列で支払が済んでるかどうかでフィルターをかけて ABC列をコピーし、DEF列に可視セルのみコピーして A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 cさん 未    150  cさん 未    150 eさん 未    120  eさん 未    120 gさん 未    300  gさん 未    300 hさん 未    210  hさん 未    210 フィルターをはずすと A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150   cさん 未    150 dさん 済    100 eさん 未    120   eさん 未    120 fさん 済    250 gさん 未    300   gさん 未    300 hさん 未    210   hさん 未    210 と、未払いの人だけ、D列以降にもコピーされてる状態にしたいのです。 可視セルへのコピーはマクロを組む必要があると聞いて見てるのですが、 私が実現させたい可視セルへのコピーとまた違うプログラムでした。 どなたかよろしくお願いします。

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • VBA 今日の行にあるセル コピー 別シートへ

    (1)sheet1にボタン button1 があり、そのボタンを押すと、マクロが起動する。 (2)データは sheet2 貼り付け先は sheet3 sheet2 F列に日付が入っています。   F列は、日付(過去~本日まで ※未来の日付はありません)か、空白の場合があります。 F列の日付が本日のとき、 sheet2 A列のセルの値を sheet3 B列へ。  A列には連番。 sheet2 D列のセルの値を sheet3 C列へ。 sheet2 G列のセルの値を sheet3 D列へ。 sheet2 F列のセルの値を sheet3 E列へ。 それぞれ、Sheet3の各行の一番下に貼り付ける形をとりたいのです。 こちらでマクロはどうしたらよいのでしょうか。

  • コピー&ペースト

    エクセルマクロで例えばをセル(A1:C3)をコピーし、別のシートの特定のセルに貼り付けをしたい時にその特定のセルを計算して指定することはできるのでしょうか。 <sheet1>    A      B      C 1 | 2 | ****** | ******| 2 | *** | ****** | ******| 3 | *** | ****** | ******| <sheet2> A(Sheet1!A1:25-24)

  • 複数シートの対象範囲セルを1つのシートに集約

    共通の条件で作成された複数シートの対象範囲セルを1つのシートに集約したく望んでおります。 月毎の身体測定結果を集約することが目的で、不特定の人数、名前の情報を管理しております。 (人数の最大は10名程度) 既存ブック(測定結果.xls)を予め設け、内部に「表紙」と「集計」シートを作成。 提出されたファイル内の各シートは測定結果.xls内に全て格納。(シート名は全て氏名です) 「表紙」シートに氏名の入力欄を設定(D列2行目から下方へそれぞれ入力) 入力された氏名からブック内のシートを検索し、対象となるシートの指定セルを「集計」シートの指定セルへコピー 説明が解り辛いと思いますので、例を伴ってご説明致します。 当月の身体測定結果をAさん・Bさん・Cさん・Dさん・Eさんの5名が提出したとします。 ※各人の測定結果はそれぞれのシート名「Aさん」、「Bさん」、「Cさん」、「Dさん」、「Eさん」で構成され、シート内の記載配列等も全て同様としております。(共通する書式フォーマットで作成) これらのシートは全て測定結果.xls内に存在するものとします。 1列目はタイトル、2列目から入力された必要数値となります。 A列には日付(A2セルから1日→A32セル=31日まで) B列には体温(B2から数値記載) C列には体重(C2から数値記載) D列には体脂肪率(D2から数値記載) E列にはBMI(E2から数値記載) F列には血圧(F2から数値記載) ※ ブック内の「集計」シートにタイトルやA列の日付も予め入力。 (1) ブック内「表紙」シートの氏名入力欄に測定者名を入力 (例:D2セル=Aさん、D3セル=Bさん、D4セル=Cさん、D5セル=Dさん、D6セル=Eさん) (2) マクロ実行 (3) 入力された測定者名から合致する対象シートを検索 (4) 「表紙」シートの氏名入力欄D2セルの対象であるAさんの情報(シート内B2::F32までの範囲)を「集計」シートB2::F32へコピー (5) D3セルの対象であるBさんの情報(同じくシート内B2::F32までの範囲)を「集計」シートG2::K32へコピー(コピー先を5列毎変える) (6) 優先順位に従い、動作を繰り返して全ての情報を「集計」シートに集約 ※ コピー先への優先順位は「表紙」シートの氏名入力欄上部より判定(D2→D3→D4・・・) このような動作をマクロ化したく望んでおります。 マクロの記録や相談箱を参考に何度かチャレンジしているのですが、コードの意味が理解できず、近づくことすら出来ません。 恐れ入りますが、ご教授いただきたくお願い致します。 以上

  • エクセルの入力データーを別のシートの日付と氏名の交差点に記録していくマクロ

    エクセルのセルに入力したデーターを別のシートの名簿一覧に記録していくにはどのようなマクロを組めばよいでしょうか? 入力イメージとして、「田中 90 良」この項目は手動で入力するとします。 Sheet1 A   B  C  D  E  F  G 1 日付 氏名 成績 区分 2 9/19 田中 90  優 ここでマクロを実行すると別のシートに Sheet2 A   B  C  D   E   F  G 1       1組       2組 2    田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90  と記録され、次に入力し、 Sheet1 A   B  C  D  E  F  G 1 日付 氏名 成績 区分 2 9/21 小林 80  良 さらにマクロを実行すると Sheet2 A   B  C  D   E   F  G 1       1組       2組  2    田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90  4 9/21        80 このように記録され、さらに Sheet1 A   B  C  D  E  F  G 1 日付 氏名 成績 区分 2 9/23 佐藤 95  優 と入力して、さらにマクロを実行すると Sheet2 A   B  C  D   E   F  G 1       1組       2組 2    田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90  4 9/21        80 5 9/23    95 という具合に、氏名と日付が交差するセルにデーターを記録していきたいのですが、 可能でしょうか? どうかお返事よろしくお願いいたします。

専門家に質問してみよう