Winは7、Excelは2013を使用しています。
A列とB列のデータを100行毎に列を変えてコピーしたいと思っています。
(画像参照願います。)
それで、別シートにコピペするサンプルコードを見つけたのですが、
同シート内でする様に変更する知識がなく、苦戦しています。
申し訳ありませんが、ご教示願います。
別シートにコピペするサンプルコード
Sub データを100行ごとに分割する()
Dim シート As Worksheet, 元 As Worksheet '元は元データのあるシート
Dim 総行数 As Long, 回数 As Long, i As Long, 開始行 As Long
Const コピー行 = 100
Set 元 = ActiveSheet '変数の元をActiveSheetにセットする
総行数 = 元.UsedRange.Rows.Count
回数 = Int(総行数 / コピー行) + IIf(総行数 Mod コピー行 > 0, 1, 0)
開始行 = 1
For i = 1 To 回数
Set シート = Sheets.Add
シート.Name = 開始行 & "~" & 開始行 + コピー行 - 1
元.Rows(開始行 & ":" & 開始行 + コピー行 - 1).Copy シート.Range("A1")
Columns("A:F").AutoFit
開始行 = 開始行 + コピー行
Next i
End Sub
手抜き版です。
A,B列の102行目以降を削除する処理は入れてません。
Sub Sample()
コピー行 = 100
回数 = Int((Range("A1").End(xlDown).Row - 2) / コピー行)
For i = 1 To 回数
nRow = i * コピー行 + 2
Range(Cells(2, i * 2 + 1), Cells(1 + コピー行, i * 2 + 2)) = Range(Cells(nRow, 1), Cells(nRow + コピー行 - 1, 2)).Value
Next i
End Sub
繰り返し法ですが、コピー貼り付などを使って、コード行数を最小限(結果6行、MAGBOX除いて)になるように考えた。
データは、1シートのA,B列にあり、結果をC列以右に、コードと名称の、2列づつ出すとして
Sub test01()
lr = Range("a100000").End(xlUp).Row
MsgBox lr
bs = Int(lr / 20) + 1
MsgBox bs
For i = 1 To bs
ActiveSheet.Range("A" & ((i - 1) * 20 + 2) & ":B" & (i * 20) + 2).Copy Cells(2, (i * 2 + 1))
Next i
End Sub
ただし当方のテストでの確認のため20行ごとに分割してやってみたので、100行ごとの場合は、VBAコード内で、20のところを、すべて100に修正してください。
お礼
mt2015様 ご回答いただきありがとうございます。 希望通りの処理が出来ました。 102行目以降を削除する処理は、がんばってみます。 いつもご回答いただき、感謝しております。