• ベストアンサー

Excel2007で質問です。

sheet1にセルD3から下に向かってデータが2000個以上入ってます。 (1)マクロボタンを押します。 (2)D列で任意の行番号の値(今回は1000行目)をコピーします。 (3)sheet2,sheet3,sheet4のN6に(2)をペイストします。 (4)、(1)に戻りマクロボタンを押します。 (5)、(2)に行きまして、1つ下の1001行目をコピーします。 (6)、(3)に行きN6の下のN7にペイストします。 これをマクロボタンを押す度に繰り返したいです。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

>マクロボタンが押される度にN6から最下セルにデータを転記処理出来 Sub 転記処理3()   Dim i As Long, LastRow As Long   With Sheets("Sheet1")     LastRow = Sheets("Sheet2").Cells(Rows.Count, "N").End(xlUp).Row + 1     If LastRow < 6 Then LastRow = 6     i = .Range("B1").Value     .Cells(i, "D").Copy Sheets("Sheet2").Cells(LastRow, "N")     .Cells(i, "D").Copy Sheets("Sheet3").Cells(LastRow, "N")     .Cells(i, "D").Copy Sheets("Sheet4").Cells(LastRow, "N")     .Range("B1").Value = .Range("B1").Value + 1   End With End Sub

961awaawa
質問者

お礼

できました!!ありがとうございます。またご協力ください。

その他の回答 (4)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>B1に予め1000を入れました。これを利用した場合のソース では転記先の各シートのN列の行数の記録は、どうされますか とりあずSheet1のC1セルとしました。 Sub 転記処理2()   Dim i As Long, j As Long   With Sheets("Sheet1")     i = .Range("B1").Value     j = .Range("C1").Value     .Cells(i, "D").Copy Sheets("Sheet2").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet3").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet4").Cells(j, "N")     .Range("B1").Value = .Range("B1").Value + 1     .Range("C1").Value = .Range("C1").Value + 1   End With End Sub

961awaawa
質問者

お礼

>転記先の各シートのN列の行数の記録は、どうされますか それについては、マクロボタンが押される度にN6から最下セルにデータを転記処理出来るようにして頂ければ幸いです。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

大先生とかぶりましたので変更しました。 i値、j値の記録にSheet1のセルD3にコメントを設けて記録します。 まずは初期値の設定を行ってD列の開始行、転記先のN列の開始行 の設定を行ってください。 Sub 初期値の設定()   Dim i As Long, j As Long   With Sheets("Sheet1").Range("D3")     If .Comment Is Nothing Then       .AddComment ""     End If     i = InputBox("D列の初期値を入力して下さい。")     j = InputBox("転記先のN列の初期値を入力して下さい。")     If i = 0 Or j = 0 Then Exit Sub     .NoteText i & "-" & j   End With End Sub Sub 転記処理()   Dim i As Long, j As Long   With Sheets("Sheet1")     i = Split(.Range("D3").NoteText, "-")(0)     j = Split(.Range("D3").NoteText, "-")(1)     .Cells(i, "D").Copy Sheets("Sheet2").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet3").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet4").Cells(j, "N")     i = i + 1     j = j + 1     .Range("D3").NoteText i & "-" & j   End With End Sub

961awaawa
質問者

お礼

おはようございます。watabe007さん。いつもありがとうございます。スマホにしたばかりで文章を書くのが大変で時々書いた長文が触れ間違って消えてしまいます(笑 B1に予め1000を入れました。これを利用した場合のソースはどうなりますか?

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

Dim i As Long, j As Long  ↑どのプロシージャーよりも上に記載してください Sub Test()   If i = 0 Then i = 1000 '初期値設定   If j = 0 Then j = 6 '初期値設定   With Sheets("Sheet1")     .Cells(i, "D").Copy Sheets("Sheet2").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet3").Cells(j, "N")     .Cells(i, "D").Copy Sheets("Sheet4").Cells(j, "N")     i = i + 1     j = j + 1   End With End Sub プックを開いている限り i値、j値は保持しているので 初期値に戻すには↓を行ってください。 Sub i値j値の初期化()   i = 0   j = 0 End Sub

961awaawa
質問者

お礼

ありがとうございました。

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.1

最初に StartSet を実行することで開始行を設定し その後、 複写する時(ボタン押下時)に Sample を実行するという解はいかがでしょうか? Option Explicit  Dim FromLine As Long  Dim ToLine As Long Sub StartSet()  FromLine = 1000  ToLine = 6 End Sub Sub Sample()  With ThisWorkbook   .Sheets("Sheet1").Cells(FromLine, 4).Copy .Sheets("Sheet2").Cells(ToLine, 14)   .Sheets("Sheet1").Cells(FromLine, 4).Copy .Sheets("Sheet3").Cells(ToLine, 14)   .Sheets("Sheet1").Cells(FromLine, 4).Copy .Sheets("Sheet4").Cells(ToLine, 14)   FromLine = FromLine + 1   ToLine = ToLine + 1  End With End Sub

961awaawa
質問者

お礼

おはようございます。この前にもお世話になりました。ありがとうございます。 このソースはモジュールの一番上に書けば良いでしょうか?

関連するQ&A

  • 前回Excel2007で複数のセルを併せて

    前にも似たような形で質問しましたが、今回は自分で検索したい形で値を入れたタイプなんです。 (1)列HIJの3行目から下に向かって既に入ってあるデータを消して (2)range(A10:C12)に自分が検索したい(ワイルドカードも時には含めた)形で値A~Fのいずれかを各セルに入れてからマクロボタンを押して (3)range(A10:C12)の複数のセルの値を併せて参照して (4)(列OPQの最後尾には新しいデータが常に追加されます)O列+P列+Q列から検索し(その検索された1つ下のセルを黄色く色を着けて)、検索された1つ下の値をコピーして (5)列HIJの3行目から下に向かってそれをペイストして表したいです。 誰か教えて下さい。お願いします。

  • Excel2007で複雑なセルコピペ。

    sheet8のセル範囲C3からセルI10000までの各セルにA~Jのいずれかがランダムに入ってます。 マクロボタンをおします。 (1)、C12の値をM3にコピペしてC12から5行戻ったC7の値をセルO3にコピペします。 (2)、M3の値とO3の値が同じならM3の背景色を黄色にしたいです。同じでないならそのままです。 マクロボタンを押します。 (3)、1つ下のC13に行き(1)と同じことをするのですが、1つ下のM4にC13の値をコピペしてC13から7行戻ったC6の値をO4にコピペしたいです。 (4)、(2)と同じようになり マクロボタンを押します (5)、1つ下のC14に行き(1)と同じことをするのですが、1つ下のM4にC14の値をコピペしてC14から9行戻ったC5の値をO5にコピペしたいです。 (6)、(2)と同じようになります。 マクロボタンを押します。 End マクロボタンを押す度にC12から1つずつ下に向かい、M3から1つずつ下に向かって値をコピペするのですが、セルOにコピペされるのは1つずつ下に向かうセルCの値から、5行戻り、7行戻り、9行戻りと戻ってはまた5行、7行、9行と戻った値を繰り返しコピペしたいです。 よろしくお願いいたします。

  • Excel2007で複数を単体として検索

    前にも似たような形で質問しました。今回は、range(A10:C12)に値A~H + ワイルドカードを自分で1つを選び入れて、1つの形にして検索できるタイプにしたいです。 (1)列HIJの3行目から下に向かって既に入ってあるデータを消して (2)range(A10:C12)に自分が検索したい(ワイルドカードも時には含めた)形で値A~Hのいずれかを各セルに入れてからマクロボタンを押して (3)range(A10:C12)を単体とし、それを参照して (4)(列OPQの最後尾には新しいデータが常に追加されます)O列+P列+Q列から検索し、その検索された1つ下のセルを黄色く色を着けて、その値だけをコピーして (5)列HIJの3行目から下に向かってそれをペイストして表したいです。 誰か教えて下さい。お願いします。

  • エクセル コピー先に残った関数のある行クリア

    エクセルのコピー元シート:100行10列 コピー先シート:ペーストする先 セル10 関数5 N行(例えば150行) コピーした後にデータが張り付いていない行に関数だけ残る(50行) この不要な行の関数を毎回手でクリアしています。 マクロで関数を消すにはどうすればよろしいかご教示願いたく、 よろしくお願いいたします。

  • エクセルのマクロで値の置き換えについて質問です

    エクセルのマクロについて質問です。 「N」日を指定した時に、その「N」日の下に設定している曜日のセルを、「祝」という値に変更したいのですが、その方法を教えて頂けないでしょうか。 日付の列=1行目 曜日の列=2行目 たとえば、A3セルにある「3」日を指定して、マクロ用に用意したボタンを押下したときに、A4セルにある「金」の値を「祝」に自動的に変更する方法です。 どなたか詳しいかた、お教え下さい。 どうぞよろしくお願いします。

  • VBA超初心者の参照に関するご質問です

    VBAの超初心者ですが、請求書を作っているところです。 A列はボタンを置くためだけに作った欄外列です。 ある任意行のAセルにボタンを置いています。 ご質問は; そのボタンを押せばアクティブセルが現在どこにあってもそのボタンが置いてある行の直ぐ下に一行挿入される。その挿入行は、例えばNo1行に書式を埋め込んだセル群を置いてあり、その行を参照してコピー・ペーストする という記述はどう書けば良いでしょうか。 アクティブセルを行の特定場所に置けばそこからの相対参照が出来ますが、「アクティブセルがどこにあっても」という記述が良く解りません。

  • Excel2016 範囲最下から移動コピペ

    sheet1のセルL4から下に向かって値が入ります。 その最下のセルから下に1セルと右に2セル移動させ、 その行のセルNから右に向かってセルBLまでを範囲コピーをし、 sheet8のA2からに、値だけをそのまま貼り付けたいです。 お願い致します。

  • Excel2007で質問?です

    E3から、各セルにABCのいずれかが入っており、下に向かっているデータがあります。 それとは別でO3にもE3のような形でデータも入っており関数も入ってます。 今回の私の質問はここからになります。 先程のE列のデータをマクロボタンを押すたびにE3から1つずつ下に向かっていきO3に1つずつ値だけをコピー挿入し今までの値を下へ1つずつずらしたいです 。 それまでにあったO3から下のデータ群には既に関数が入っており値だけが1つずつ下にずれていく形にしたいです。O3から下の関数は動かないようにしたいです。 本当にわかりませんのでお願いします。エラーになる度にヘコみます。

  • <EXCEL> 任意のデータが含まれる行の抽出

    こんにちは。 任意の値が含まれる行を抽出し、その行をコピーしたいのですが 目視でやっているために、非常に時間が掛かっております。 また、上記に加え 任意の値が含まれる行の中からD列にあるデータだけを コピー&ペーストというところまでできますでしょうか? 上記2点が出来ますと、非常に作業効率が上がりますので 何とかお助けください。

  • Excel2007で行指定して数字を記号に変換

    いつもお世話になり感謝します。 X列の1マス1マスに0~9の数字のいずれかが入ると、X列に入った0~9の値に反応して、そのX列の1マスを水平上にかつ、中心として、V列W列とY列Z列のセルに0~9の数字のいずれかが入ります。 更に、V列W列とY列Z列に入った数値を記号に変換して、その変換内容は 0が●で 1~9は× になります。 マクロボタンを押すと 行指定ができるダイアログボックスが出て来て 行指定されたセルXに0~9の数字を0から1つずつ入れて 別sheetの、0の場合はB20にV列の値を、W列はC20、Y列はD20、Z列はE20にと変換内容に沿ってコピペしたいです。 Xに3が入るということは、別sheetの(B23:E23)に変換された記号が入ってる形であることが正解の形になります。 私の下手な質問がおおまかにご理解して頂けたと思いますので、ここから質問を綺麗にまとめます。 Asheet上にあるマクロボタンからBsheetのX列の行番号指定に始まり、その行番号指定したXセルに0~9が1つずつ入りますと、セルA20~A29に0~9と数字を付ってますので V列はAsheetのB20から下に、W列はAsheetのC20から下に、Y列はAsheetのD20から下に、Z列はAsheetのE20から下に マクロボタンで行指定する度に変換内容に沿って変換された記号が(B20:E20)~(B29:E29)にと一気にずらーっと入ってるのが希望なんです。 再度ご協力頂けたら嬉しいです。

専門家に質問してみよう