行のコピーの繰り返しマクロ
◇-?行のコピーの繰り返しマクロ-うみ(初)-10/05-18:01(95)-No.297168 ┗?!Re:行のコピーの繰り返しマクロ...-白茶-10/05-18:38(95)-No.297180 ┗?!?Re:行のコピーの繰り返しマクロ...-うみ-10/05-19:20(94)-No.297186 ┗?!?!Re:行のコピーの繰り返しマク...-白茶-10/05-20:42(93)-No.297215 ┣?!?!!別案です...-白茶-10/06-09:21(80)-No.297293 ┗?!?!!本題です。...-白茶-10/06-12:08(77)-No.297318 ┣?!?!!!ぶらさがろっと...-半端者-10/06-14:17(75)-No.297345 ┗?!?!!【ありがとう】Re:本題です。...-うみ-10/06-21:59(67)-No.297481 ┗?!?!!A【解決】ありがとうございま...-うみ-10/06-22:16(67)-No.297491
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
297168 | 行のコピーの繰り返しマクロ | うみ(初) | 2005/10/05-18:01 |
メーカー名:NEC 日本電気 OS名:WindowsXp パソコン名:LaVieLLL500/2 -- エクセルで作った表・・たとえば 山口 広島 島根 岡山 123 ・ ・ ・ ・ ・ 山口 広島 島根 岡山 456 ・ ・ ・ こういう表があります。 山口などデータが入った行の下に空白行が9行あります。 上の行のデータを下9行にコピーし 10行目のデータをその下9行にコピー・・というのを 何行も繰り返したいのですが どういうふうにマクロを組めばいいのでしょうか? よろしくお願いします。 |
▲このページのトップに戻る
297180 | Re:行のコピーの繰り返しマクロ | 白茶 | 2005/10/05-18:38 |
記事番号297168へのコメント うみ(初)さんは No.297168「行のコピーの繰り返しマクロ」で書きました。 こんにちは。 一般機能でもある程度、楽に出来ると思いますが。 その前にすみません、ご質問内容が良く解りません。 >上の行のデータを下9行にコピー 上の行って? >山口 広島 島根 岡山 123 の行の事です? なら、1:10を選択した状態で、Ctrl+Dとか。 で、 >10行目のデータをその下9行にコピー この場合の10行目って、どれです? >山口などデータが入った行の下に空白行が9行 ですから、この時点で10行消費しています。 2つ目の >山口 広島 島根 岡山 456 の行は11行目ということになりますが、 >10行目のデータをその下9行にコピー すれば、11行目が上書されますよ? |
▲このページのトップに戻る
297186 | Re:行のコピーの繰り返しマクロ | うみ | 2005/10/05-19:20 |
記事番号297180へのコメント 白茶さんは No.297180「Re:行のコピーの繰り返しマクロ」で書きました。 すみません、説明が下手でした。 1 山口 岡山 広島 123 2 3 4 5 6 7 8 9 10 11 山口 岡山 島根 456 12 13 14 15 ・ ・ ・ というような表で 1行目、11行目、21行目・・・と10行ごとにデータが入っています。 2行目から10行目、12行目から20行目・・は空白なんですが その空白行に 例えば2〜10行目までの空白には1行目のデータを 12〜20行目までの空白には11行目のデータをといれていきたいのですが・・。 この表はファイルによって大きさも異なり全行数は決まっておらず 限りなく大きな表です。 こういう場合マクロを組むのが一番早いかとは思うのですが 組み方がいまいちよくわかりません。 よろしくお願いします。 |
▲このページのトップに戻る
297215 | Re:行のコピーの繰り返しマクロ | 白茶 | 2005/10/05-20:42 |
記事番号297186へのコメント うみさんは No.297186「Re:行のコピーの繰り返しマクロ」で書きました。 >1行目、11行目、21行目・・・と10行ごとにデータが入っています。 ですよね。一応それを確認したかっただけなんです。 今回のような場合は、 「10行ごとに」という条件がはっきりしているので、 A1を選択して状態で、一旦、 Range(Selection, Selection.Offset(9, 4)).Select Selection.FillDown Selection.End(xlDown).Select を実行させた後、続けて必要数繰返し(Ctrl+Y)すれば、 基本的には処理可能です。 しかし・・・、 >この表はファイルによって大きさも異なり全行数は決まっておらず >限りなく大きな表です。 ですか。 >こういう場合マクロを組むのが一番早い そうですね。 繰返しが面倒だから、ご質問されている訳ですよね。 >組み方がいまいちよくわかりません。 ・・・実は、私もなんですよね・・・。 「ならレス付けるなよ!!」って声が聞こえて来そう。 スマセンね(@´ω`@ゞ へへ 私も勉強中の身ですので、アドバイスできるのは、ここまでです。 詳しい方のレスをお待ちになって下さい。 ご自分で勉強されるのであれば、 Excel前回VBA http://www.sigoto.co.jp/excel/ のステートメントの章などが参考になるですよ。 私も勉強してきま〜す。 |
▲このページのトップに戻る
297293 | 別案です | 白茶 | 2005/10/06-09:21 |
記事番号297215へのコメント 白茶さんは No.297215「Re:行のコピーの繰り返しマクロ」で書きました。 マクロじゃないんですけど、 関数とオートフィルタを使った方法です。 G列とH列を作業列として使用します。 (後で削除してよいです) ★1 G1=FLOOR(ROW(A1)-1,10)+1 H1=MOD(ROW(A1),10)=1 として、データ下端までフィルコピーします。 すると、 G列に1〜10行目に「1」、11〜20行目に「11」・・・という数字、 H列に1、11、21・・・行目に「TRUE」他は「FALSE」が返ってきます。 ★2 H列全体を選択した状態で、 「データ」→「フィルタ」→「オートフィルタ」をかけ、 プルダウンから「FALSE」を選択します。 すると、11、21、31・・・行が非表示になります。 ★3 A2に「=INDEX(A:A,$G2)」 と式を入力して、これをA〜E列のデータ領域全体にコピペします。 簡単なのは、 A2をコピー、E列のデータ下端セルを選択、 Ctrl+Shift+←、Ctrl+Shift+↑、Shift+↓と 続けて押せば、貼り付け範囲が選択出来ますので、Enterで貼り付け。 ★4 「データ」→「フィルタ」→「オートフィルタ」で H列のオートフィルタを解除します。 ★5 A:E列全体をコピーして、「形式を選択して貼り付け」で 「値」だけ貼り付けて出来上がり。 G:Hの作業列を削除。 |
▲このページのトップに戻る
297318 | 本題です。 | 白茶 | 2005/10/06-12:08 |
記事番号297215へのコメント 白茶さんは No.297215「Re:行のコピーの繰り返しマクロ」で書きました。 へへ。 勉強してきましたよ。 Sub copy() Dim c As Integer c = 1 Do If Cells(c, 1) = Empty Then Exit Do Cells(c, 1).Select Range(Selection, Selection.Offset(9, 4)).Select Selection.FillDown c = c + 10 Loop End Sub とりあえず、これでイケると思います。 Sub copy() Dim あ As Integer あ = 1 Do Cells(あ, 1).Select Range(Selection, Selection.Offset(9, 4)).Select Selection.FillDown あ = あ + 10 Loop Until Cells(あ, 1) = Empty End Sub でも可ですね。 |
▲このページのトップに戻る
297345 | ぶらさがろっと | 半端者 | 2005/10/06-14:17 |
記事番号297318へのコメント ・マクロの記述は、作成者の技量も勿論あるけど、ループのさせ方ひとつをとっても 作成者の好みや性格、パソコンの使用環境、扱うデータの質や量等で違ってくるの で、どれが正解というのはないから、多くの人の記述例を参考にしてね。 (ただし、私自身は身の回りの処理に使っているだけなので、プロの人から見ると 「なんだ、この記述」と思えるところもある筈なので、宜しく) ・白茶さんも頑張って例示してくれているので、突っ込んであげてね。 Sub test1() Dim a As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim Rng1 As Range Dim Rng2 As Range Sheet1.Select a = Range("A100").End(xlUp).Row '元データは、100行目までに想定。 For i = 1 To a Step 10 For j = i + 1 To i + 9 For k = 1 To 4 Set Rng1 = Cells(i, k) Rng1.Select Selection.Copy Set Rng2 = Cells(j, k) Rng2.Select ActiveSheet.Paste Next k Next j Next i Application.CutCopyMode = False End Sub |
▲このページのトップに戻る
297481 | Re:本題です。 | うみ | 2005/10/06-21:59 |
記事番号297318へのコメント 白茶さんは No.297318「本題です。」で書きました。 ありがとうございました。できました。 このマクロで3日間は悩んでたのでとても助かりました。 白茶さんのわからないことは解決する!という姿勢 私も見習いたいと思います。 ほんとうにありがとうございました。 |
▲このページのトップに戻る
297491 | ありがとうございました | うみ | 2005/10/06-22:16 |
記事番号297481へのコメント うみさんは No.297481「Re:本題です。」で書きました。 解決しました。 みなさん、いろいろありがとうございました。 私ももう少し頑張って勉強したいと思います。 |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|