10秒目をつむったら…

office xp excel
シート1A1:H100 の表があるとします。
A3からデータが入っています。
A3:H8を選択し、シート2のA3:H8にコピペします。
次にシート1に戻ってA9:H14を選択して、シート2の同じA3:H8に上書きコピペします。
これをA100まで繰り返しますが、途中でデータがなくなればそこで終了します。

この6行8列をひとつの選択単位として下方にずれていくにはどういうマクロを組めばいいですか?

A 回答 (2件)

 


シート2のA3:H8は最後にコピーした内容になってしまうのですが、A3からA100までを繰り返す意味が理解できない。
 
 
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>シート2のA3:H8は最後にコピーした内容になってしまうのですが、
かまいません。

>A3からA100までを繰り返す意味が理解できない。
6行8列をひとつの枠として他で編集しています。
この作業が終了したらまた次の下方の6行8列を選択して編集したいわけです。

お礼日時:2011/04/10 22:33

sub macro1()


 dim i as long
 worksheets("Sheet1").select
 for i = 3 to 100 step 6
  if cells(i, "A") = "" then
  exit sub
  end if
  cells(i, "A").resize(6, 8).copy destination:=worksheets("Sheet2").range("A3:H8")
 next i
end sub


#1)
簡単な算数ですが,3行目から6行ステップで進行していくのでは,A100までになりません。
#2)
「途中でデータが無くなる」とは,具体的にどういうシチュエーションなのか不明瞭です。
#3)
終了の条件が来るまでイチイチコピーを繰り返し,一回前の実施結果を潰していくのはいかにも無駄な作業ですね。

そういった部分をきちんと手当てして,サンプルのマクロを応用して自作してください。



sub macro2()
 dim i as long
 for i = 3 to 99 step 6
  if worksheets("Sheet1").cells(i, "A") = "" then
   worksheets("Sheet1").cells(i - 6, "A").resize(6, 8).copy _
    destination:=worksheets("Sheet2").range("A3:H8")
   exit sub
  end if
 next i
end sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
すこし進みました。
質問の表現方法というのはむずかしいものですね。

お礼日時:2011/04/11 00:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!