• ベストアンサー

マクロを使用し、EXCELのデータから必要な部分を取り出し2つのsheetに貼り付けたい

条件 EXCELのデータ A列からL列まで 複数行(行数は、決まっていない) (例) 40行ほどあるデータを見て 1行目から10行目までをsheet1に 12行目から20行目までをsheet2に貼り付けたい場合。 11行目のA列(空白になっている)に手入力で「a」と入力 21行目のA列(空白になっている)に手入力で「b」と入力し、 1行目から「a」のある行までをコピーし、sheet1に貼り付ける 「a」のある行より1行下から「b」のある行までをコピーし、sheet1に貼り付ける 以上のことをマクロで実行する方法を教えて下さい。

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

  • ベストアンサー
  • NoBi18
  • ベストアンサー率53% (7/13)
回答No.2

マクロを覚えるには、キーボードだけでExcelを使えるようになることが大事です。 ・40行のうち、途中の1行にA列が空白である行がある ・その他の行はA列~L列までデータが隙間なく入力されている のであれば、キーボードによる操作は 1.【A1】を選択 2.Ctrl+Shift+→ (【A1:L1】が選択される) 3.Ctrl+Shift+↓ (前半部分が選択される) 4.選択範囲を右クリック-「コピー」 5.Sheet1を選択 6.貼りつけたいセルを右クリック-「貼りつけ」 7.元のシートに戻る 8.Ctrl+↓を2回 (後半部分の先頭セルが選択される) 9.Ctrl+Shift+→ (後半先頭行のA列~L列が選択される) 10.Ctrl+Shift+↓ (後半部分が選択される) 11.選択範囲を右クリック-「コピー」 12.Sheet2を選択 13.貼りつけたいセルを右クリック-「貼りつけ」 14.元のシートに戻る 15.Escを押してコピーモードを解除する という操作になります。マクロを記録し、若干修正すると以下のようになります。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2006/8/19 ユーザー名 : kenchandesu ' ' Range("A1").Select '1 Range(Selection, Selection.End(xlToRight)).Select '2 Range(Selection, Selection.End(xlDown)).Select '3 Selection.Copy '4 Sheets("Sheet1").Select '5 Sheets("Sheet1").Range("貼りつけたいセル").Select '6 ActiveSheet.Paste '6 Sheets("元のシート").Select '7 Selection.End(xlDown).Select '8 Selection.End(xlDown).Select '8 Range(Selection, Selection.End(xlToRight)).Select '9 Range(Selection, Selection.End(xlDown)).Select '10 Application.CutCopyMode = False '11の副産物 Selection.Copy '11 Sheets("Sheet2").Select '12 Sheets("Sheet2").Range("貼りつけたいセル").Select '13 ActiveSheet.Paste '13 Sheets("元のシート").Select '14 Application.CutCopyMode = False '15 End Sub 途中の空白行以外のデータに空白セルがある場合、もう少し複雑な処理が必要になります。

kenchandesu
質問者

お礼

連絡が遅くなりました。 キーボードによる操作からマクロを記録してみると、 うまくいきました。 ありがとうございました!

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 昨日から、しばらく読んでみましたが、その文章の内容では、良く分かりません。 ブック間のような気がしますが、もともと、そのデータは、どこにあるものでしょうか?それが書かれていません。 ・1行目から10行目までをsheet1に ・12行目から20行目までをsheet2に貼り付けたい場合。 40行あるとしたら、残りはどうなるのでしょう? ・11行目のA列(空白になっている)に手入力で「a」と入力 手入力というのは、何を指すのか分かりません。マクロの最中に入れるのか、それとも、マクロオフで入力するか、どちらでしょう? ・1行目から「a」のある行までをコピーし、sheet1に貼り付ける ・「a」のある行より1行下から「b」のある行までをコピーし、sheet1に貼り付ける 上書きするという意味なのでしょうか?「ある行」とは何でしょうか? ご自身の中でしか分かっていない部分が多くて、私には、今のところ、これは無理です。

kenchandesu
質問者

お礼

説明がへたですみませんでした。 ご迷惑をおかけしました。 No.2の方の説明でうまくいきました。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.3

「a」や「b」を手入力するなら手でコピーした方が安全なだけマシです。 > どんな行数にでも対応できるようなマクロを求めています。 これも手入力なら簡単です。(VBAでも、やりようはいくらでもあります。何が最適かはユーザーにしかわかりません。) > 40行ほどあるデータを見て これは例えば、「データが40行ほどあるので見てください」というようなメッセージを出すということですか? であれば、MsgBoxで可能です。さもなければコンピュータには不可能です。 やろうとされている事は、処理は単純でも、エラー処理を含めた作り込みがキモなので、ユーザー本人にしか実用性のあるものは作れません。 そもそもサンプルの作成依頼などは、質問者のスキルアップの芽を摘んでしまうことになります。常識的な掲示板では禁止事項の筈です。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

これだけやることがはっきりしているなら 「マクロの記録」で そのものズバリが出来そうですが。 出来てしまえば 「マクロの実行」で実行できますし、 自作ツールバーに登録することもできます。

kenchandesu
質問者

補足

1行目から10行目までをsheet1に 12行目から20行目までをsheet2に貼り付けたい場合 と書きましたが、 10行目、20行目というのは例であって、データによって行数が違ってきます。どんな行数にでも対応できるようなマクロを求めています。

関連するQ&A