アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。
シートのデータを1行飛ばしで
別のシートに転記するにはどうすればいいのでしょうか?

転記元データは、13行目からで、A列、D列、H列。
その後の転機するデータは、1行飛びにあります。

転記シートには12行目から4行飛ばしで転記。

どのように書けばよいのでしょうか?
よろしくお願いします。

質問者からの補足コメント

  • すいません。
    転記先はC列、E列、G列です。
    よろしくお願いします。

      補足日時:2018/01/24 09:20
  • ありがとうございます。
    しかしながら、下記の様な結果です。
    元データの8行飛ばしデータが、
    転記シートに20行飛ばしに
    入ってきてしまいます。
    どこを変えればよいですか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/01/24 10:36
  • HAPPY

    原因がわかりました。
    転記シートに結合しているセルがあり、
    その結合セル分だけ転記位置がヅレていました。
    いろいろとありがとうございました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/01/25 08:23

A 回答 (3件)

続けてお邪魔します。



>元データの8行飛ばしデータが、
>転記シートに20行飛ばしに

ん~~~
手元のExcelでSample2のコードを実行すると
↓の画像のようになりました。

質問文をよむと
Sheet1の13行目から1行とび(13・15・17・・:行目)のデータを
Sheet2の12行目から4行とび(12・17・22・・・行目)に転記する。

ちゃんとお望みどおりになっているように思うのですが
当方の解釈が間違っているのでしょうか?m(_ _)m
「エクセルVBA 転記するループ処理」の回答画像3
この回答への補足あり
    • good
    • 0

No.1です。



>転記先はC列、E列、G列です。

↓のコードに変更してみてください。

Sub Sample2()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 13 To wS.Cells(Rows.Count, "A").End(xlUp).Row Step 2
cnt = cnt + 1
With .Cells((cnt - 1) * 5 + 12, "C") '//★//
.Value = wS.Cells(i, "A")
.Offset(, 2) = wS.Cells(i, "D") '//★//
.Offset(, 4) = wS.Cells(i, "H") '//★//
End With
Next i
End With
End Sub

※ 「★」の行が前回と変わっています。m(_ _)m
この回答への補足あり
    • good
    • 1

こんにちは!



転記先の列は同じ列(A・D・H列)で良いのですかね?

元データはSheet1にあり、Sheet2に「転記」するとします。
一例です。標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 13 To wS.Cells(Rows.Count, "A").End(xlUp).Row Step 2
cnt = cnt + 1
With .Cells((cnt - 1) * 5 + 12, "A") '//★//
.Value = wS.Cells(i, "A")
.Offset(, 3) = wS.Cells(i, "D")
.Offset(, 7) = wS.Cells(i, "H")
End With
Next i
End With
End Sub

こんな感じではどうでしょうか?

※ 「4行飛ばしで・・・」の部分が違っていれば
「★」の行の「5」の部分で調整してください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
作業はまだですが、取り急ぎお礼申し上げます。

お礼日時:2018/01/24 08:30

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