Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3606 / 13644 ツリー ←次へ | 前へ→

【61170】コピーした行を4行目下ごとに繰り返し挿入する方法 yuna 09/4/14(火) 14:14 質問[未読]
【61171】Re:コピーした行を4行目下ごとに繰り返し挿... HAM 09/4/14(火) 14:18 発言[未読]
【61172】Re:コピーした行を4行目下ごとに繰り返し挿... HAM 09/4/14(火) 14:23 発言[未読]
【61186】Re:コピーした行を4行目下ごとに繰り返し挿... yuna 09/4/15(水) 10:29 お礼[未読]
【61178】Re:コピーした行を4行目下ごとに繰り返し挿... yuna 09/4/14(火) 16:39 質問[未読]
【61184】Re:コピーした行を4行目下ごとに繰り返し挿... つん 09/4/15(水) 9:34 回答[未読]
【61185】Re:コピーした行を4行目下ごとに繰り返し挿... yuna 09/4/15(水) 10:28 お礼[未読]
【61173】Re:コピーした行を4行目下ごとに繰り返し挿... つん 09/4/14(火) 15:07 回答[未読]

【61170】コピーした行を4行目下ごとに繰り返し挿...
質問  yuna  - 09/4/14(火) 14:14 -

引用なし
パスワード
   こんにちは!よろしくお願いいたします。
Excel2003で下記のような計算式が入力されている
1行をコピーして4行目後にコピーしたセルを挿入したいのですが、
複数あるため、マクロを作りたいと思っています。

  A   B  C
1 氏名 住所 件数
2 氏名 住所 件数
3 氏名 住所 件数  
4 氏名 住所 電話
5 氏名 住所 郵便   → 計算式が入力されている
6 氏名 住所 ふりがな
7 氏名 住所 ふりがな
8 氏名 住所 ふりがな
9 氏名 住所 郵便   → 5行目の計算式も含め1行挿入する

この操作を最終行まで繰り返す

Sub Macro1()
'
  Rows("5:5").Select
  Selection.Copy
  Rows("9:9").Select
  Selection.Insert Shift:=xlDown
  Range("A2").Select
End Sub

5行目をコピーし4行目ごとにコピーしたセルを繰り返し
挿入したいのです。

マクロは初心者です。ご指導よろしくお願いいたします。

【61171】Re:コピーした行を4行目下ごとに繰り返し...
発言  HAM  - 09/4/14(火) 14:18 -

引用なし
パスワード
   ▼yuna さん:
こんにちは私も教わる立場なのでもっといい方法があると思いますが
このようなやり方はいかがでしょうか

Dim R, Endrow, R_count As Long
Endrow = Cells(Rows.Count, 1).End(xlUp).Row
R_count = 0
  For R = 5 To Endrow Step 4
    Rows(R + R_count - 1).Copy
    Rows(R + R_count).Insert
    R_count = R_count + 1
    Endrow = Endrow + 1
  Next R

【61172】Re:コピーした行を4行目下ごとに繰り返し...
発言  HAM  - 09/4/14(火) 14:23 -

引用なし
パスワード
   ▼yuna さん:

これの方がまだましですね

Dim R, Endrow, R_count As Long
Endrow = Cells(Rows.Count, 1).End(xlUp).Row
R_count = 0
  For R = 4 To Endrow Step 4
    Rows(R + R_count).Copy
    Rows(R + R_count).Insert
    R_count = R_count + 1
    Endrow = Endrow + 1
  Next R

【61173】Re:コピーした行を4行目下ごとに繰り返し...
回答  つん  - 09/4/14(火) 15:07 -

引用なし
パスワード
   ▼yuna さん
こんにちは。
横から失礼します。

>こんにちは!よろしくお願いいたします。
>Excel2003で下記のような計算式が入力されている
>1行をコピーして4行目後にコピーしたセルを挿入したいのですが、
>複数あるため、マクロを作りたいと思っています。
>
>  A   B  C
>1 氏名 住所 件数
>2 氏名 住所 件数
>3 氏名 住所 件数  
>4 氏名 住所 電話
>5 氏名 住所 郵便   → 計算式が入力されている
>6 氏名 住所 ふりがな
>7 氏名 住所 ふりがな
>8 氏名 住所 ふりがな
>9 氏名 住所 郵便   → 5行目の計算式も含め1行挿入する
>
>この操作を最終行まで繰り返す

えと、この表では、どこに計算式があって、どういう計算なのかわからんのですが、
とりあえず、件数が数字っぽいので、5行目にその件数を合計するとして・・・
(ふりがなとか郵便とかは無視)
9行目に、5行目をコピーということは、
5行目の計算は2〜4行目の計算
9行目は6〜8行目の計算・・・と考えてみます。
なんかムリクリだなー^^;

ということで、

Sub test()

  Dim lngA As Long
  Dim i As Long

  lngA = Cells(Rows.Count, 1).End(xlUp).Row
  lngA = lngA - (lngA - 5) Mod 3
  
  MsgBox lngA
  
  For i = lngA To 6 Step -3
    Rows(5).Copy
    Rows(i).Insert Shift:=xlDown
  Next i

End Sub

で、どかな?
やってみたらそれっぽかった・・ってレベルなんですが^^;

【61178】Re:コピーした行を4行目下ごとに繰り返し...
質問  yuna  - 09/4/14(火) 16:39 -

引用なし
パスワード
   ▼HAM さん:
>▼yuna さん:
>こんにちは私も教わる立場なのでもっといい方法があると思いますが
>このようなやり方はいかがでしょうか
>
>Dim R, Endrow, R_count As Long
>Endrow = Cells(Rows.Count, 1).End(xlUp).Row
>R_count = 0
>  For R = 5 To Endrow Step 4
>    Rows(R + R_count - 1).Copy
>    Rows(R + R_count).Insert
>    R_count = R_count + 1
>    Endrow = Endrow + 1
>  Next R


早速の回答をありがとうございます。
私の説明が悪くて申し訳ありません。

下記のような表があり、5行目や8行目、11行目の週平均勤務時間には計算式が入っており、この5行目の計算式が入っている行をコピーし、8行目、11行目、14行目、17行目、等の4行下に挿入して繰り返し貼り付けを行いたいです。
よろしくお願いいたします。

  A    B   C      D      D
1
2 コード  氏名 勤務時間    2009/03 2009/04
3 123  A 出勤日       21 16
4 労働時間     203.67 139
5 週平均勤務時間  48.7 43.5
6 456   B 出勤日      20 16
7 労働時間     176.67 117.34
8 週平均勤務時間 21.5 36.7
9 789  C 出勤日      23 17
10 労働時間      179 125.5
11 週平均勤務時間  39 37

【61184】Re:コピーした行を4行目下ごとに繰り返し...
回答  つん  - 09/4/15(水) 9:34 -

引用なし
パスワード
   おはようございます。

なんか最初の表と全然違うな^^;
どうもはっきりしないところもありますが・・・
要するにこういう事?

「労働時間」の行の下に、「週平均労働時間」をコピーしていく。

Sub これでええんか()

  Dim lngLast As Long
  Dim i As Long
  
  lngLast = Cells(Rows.Count, 1).End(xlUp).Row
  
  For i = lngLast To 6 Step -1
    If Cells(i, 1).Value = "労働時間" Then
      Rows(5).Copy
      Rows(i + 1).Insert Shift:=xlDown
    End If
  Next i

End Sub

【61185】Re:コピーした行を4行目下ごとに繰り返し...
お礼  yuna  - 09/4/15(水) 10:28 -

引用なし
パスワード
   ▼つん さん:
>おはようございます。
>
>なんか最初の表と全然違うな^^;
>どうもはっきりしないところもありますが・・・
>要するにこういう事?
>
>「労働時間」の行の下に、「週平均労働時間」をコピーしていく。
>
>Sub これでええんか()
>
>  Dim lngLast As Long
>  Dim i As Long
>  
>  lngLast = Cells(Rows.Count, 1).End(xlUp).Row
>  
>  For i = lngLast To 6 Step -1
>    If Cells(i, 1).Value = "労働時間" Then
>      Rows(5).Copy
>      Rows(i + 1).Insert Shift:=xlDown
>    End If
>  Next i
>
>End Sub


ありがとうございました!
最初の表と違ってしまい、申し訳ありません。
コピーした行を繰り返しコピーし、挿入する表が
もう一つありまして、この表の方がわかりやすい
かと思い、UPしました。
返って分かりにくくして、本当に申し訳ありません
でした。

繰り返すコードが分からなくて、今回は皆さんに教えて頂いて
大変助かりました!!!
ありがとうございました!

【61186】Re:コピーした行を4行目下ごとに繰り返し...
お礼  yuna  - 09/4/15(水) 10:29 -

引用なし
パスワード
   ▼HAM さん:
>▼yuna さん:
>
>これの方がまだましですね
>
>Dim R, Endrow, R_count As Long
>Endrow = Cells(Rows.Count, 1).End(xlUp).Row
>R_count = 0
>  For R = 4 To Endrow Step 4
>    Rows(R + R_count).Copy
>    Rows(R + R_count).Insert
>    R_count = R_count + 1
>    Endrow = Endrow + 1
>  Next R

ありがとうございました。
繰り返すコードがわからなくて、何度行っても上手くいかず、
困っておりました。
今回はいろいろ教えて頂いて、勉強になりました。
これからもVBAの勉強に頑張りたいと思います。
本当にありがとうございました。

3606 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free