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

過去に同じような質問をさせていただいていますが(https://oshiete.goo.ne.jp/qa/11047141.html)
解決しないまま締め切られてしまったので、再質問です。
添付画像のように、AJ列からEV列まで8項目が15回繰り返しているデータが複数行あり、
これを別シートのH列から始まるようコピペしたいのですが
列方向に15回、最終行まで自動で繰り返すvbaが分かりません。

前回の質問の回答でいただいたvbaは
resultList(i, j) = paramList(1, ((j - 1) * 15) + i)の部分でエラーになってしまいます。

よろしくお願いします。

「列方向に移動してコピーの繰り返し vba」の質問画像

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

  • 説明不足ですみません。
    やりたいことは読み取っていただいた内容であっています。

    別シートの17行目からは元データシートの3行目(データ2行目)です。
    32行目からは元データシートの4行目(データ3行目)が。

    A15~H15をコピペ後1行下のデータに移動する感じです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/15 09:30

A 回答 (3件)

確認です。



やりたいことは下記であっていますか?

元データ
A1 B1 C1・・・H1 A2 B2 C2・・・H2 A15 B15 C15・・・H15 

貼付け後データ
A1 B1 C1・・・H1
A2 B2 C2・・・H2
A3 B3 C3・・・H3
・・・
A15 B15 C15・・・H15


添付画像では、どのように並べ替えたいのかがあいまいでした。
別シートの17~31行目はどういうものでしょうか?2~16行目と同じもの?
この回答への補足あり
    • good
    • 0

要は、横にあるデータを、別のシートに縦に貼り付けることでしょうか?


Excel2007以上

'//標準モジュール
Sub ConvertTrans()
'実際のシート名を"------- " の間に入れてください。
 Dim sh1 As Worksheet: Set sh1 = Worksheets("Sheet1")
 Dim sh2 As Worksheet: Set sh2 = Worksheets("Sheet2")
 Dim c As Range
 Dim i As Long
 Application.ScreenUpdating = False
 With sh1
  '開始は、シートのAJ2から
  For Each c In .Range("AJ2", .Cells(Rows.Count, "AJ").End(xlUp))
   .Range(c, .Cells(c.Row, Columns.Count).End(xlToLeft)).Copy
   sh2.Cells(2, 8 + i).PasteSpecial xlPasteAll, , , True 'シート2のH2からTranspose
   i = i + 1
  Next c
 End With
 Application.ScreenUpdating = True
End Sub
    • good
    • 0

No.1です。



標準モジュールに貼り付けてください。
データの配置はサンプルどおりです。

Sub narabekae()
Dim i As Long
Dim j As Long
Dim col_munber As Long
Dim start_row As Long
Dim start_col As Long
Dim end_row As Long
Dim end_col As Long
Dim dest_row As Long
Dim dest_col As Long
Application.ScreenUpdating = False
'
Worksheets("Sheet1").Activate
start_row = 2 '元データ
start_col = 36 '元データ
end_row = Cells(Rows.Count, 36).End(xlUp).Row '元データ
end_col = 155 '元データ
dest_row = 2 '貼付け先
dest_col = 8 '貼付け先
col_number = 8 '貼付け後の列数
row_number = (end_col + 1 - start_col) / col_number '貼付け後の行数(元データ1行当たり)

For i = start_row To end_row ' i:元データの行カウンタ
For j = 1 To row_number ' j:列カウンタ
Range(Cells(i, start_col + (j - 1) * col_number), Cells(i, start_col + (j + 0) * col_number - 1)).Copy
Worksheets("Sheet2").Activate
Range(Cells(dest_row + j - 1 + (i - start_row) * row_number, dest_col), Cells(dest_row + j - 1 + (i - start_row) * row_number, dest_col + 7)).PasteSpecial xlPasteAll
Worksheets("Sheet1").Activate
Next j
Next i
Worksheets("Sheet1").Activate

Application.ScreenUpdating = True
End Sub
    • good
    • 0

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