行のコピーの繰り返しマクロ



◇-?行のコピーの繰り返しマクロ-うみ(初)-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行にコピー・・というのを
何行も繰り返したいのですが
どういうふうにマクロを組めばいいのでしょうか?

よろしくお願いします。

▲このページのトップに戻る
297180Re:行のコピーの繰り返しマクロ白茶 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行目が上書されますよ?


▲このページのトップに戻る
297186Re:行のコピーの繰り返しマクロうみ 2005/10/05-19:20

記事番号297180へのコメント
白茶さんは No.297180「Re:行のコピーの繰り返しマクロ」で書きました。

すみません、説明が下手でした。

1 山口 岡山 広島 123








10 
11 山口 岡山 島根 456
12
13
14
15



というような表で
1行目、11行目、21行目・・・と10行ごとにデータが入っています。
2行目から10行目、12行目から20行目・・は空白なんですが
その空白行に
例えば2〜10行目までの空白には1行目のデータを
12〜20行目までの空白には11行目のデータをといれていきたいのですが・・。
この表はファイルによって大きさも異なり全行数は決まっておらず
限りなく大きな表です。
こういう場合マクロを組むのが一番早いかとは思うのですが
組み方がいまいちよくわかりません。
よろしくお願いします。

▲このページのトップに戻る
297215Re:行のコピーの繰り返しマクロ白茶 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

▲このページのトップに戻る
297481Re:本題です。うみ 2005/10/06-21:59

記事番号297318へのコメント
白茶さんは No.297318「本題です。」で書きました。

ありがとうございました。できました。
このマクロで3日間は悩んでたのでとても助かりました。
白茶さんのわからないことは解決する!という姿勢
私も見習いたいと思います。
ほんとうにありがとうございました。

▲このページのトップに戻る
297491ありがとうございましたうみ 2005/10/06-22:16

記事番号297481へのコメント
うみさんは No.297481「Re:本題です。」で書きました。

解決しました。
みなさん、いろいろありがとうございました。
私ももう少し頑張って勉強したいと思います。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言