• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 100行ごとに列を変更してコピーする。)

VBAで100行ごとに列を変更してコピーする方法

このQ&Aのポイント
  • VBAを使って、ExcelのA列とB列のデータを100行ごとに列を変えてコピーする方法について教えてください。
  • 具体的な処理としては、別シートに100行ごとにデータを分割し、列を変更してコピーするサンプルコードを使用します。
  • この方法を使えば、データを簡単に分割できるだけでなく、同じシート内で処理を行う場合でも応用することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

手抜き版です。 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

6338-tm
質問者

お礼

mt2015様 ご回答いただきありがとうございます。 希望通りの処理が出来ました。 102行目以降を削除する処理は、がんばってみます。 いつもご回答いただき、感謝しております。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

繰り返し法ですが、コピー貼り付などを使って、コード行数を最小限(結果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に修正してください。

6338-tm
質問者

お礼

imogasi様 ご回答いただきありがとうございます。 できましたら、1~101行まではA列B列のままで、 102行目をC列以降に100行づつコピペしたかったのです。 申し訳ありません。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

すみません、絶対参照にするのを忘れていました。また、スペースの時0が出ます。 少し長いですが、 C2 =IF(INDEX($A:$A,ROW(A2)+COLUMN(A2)*50-50,1)="","",INDEX($A:$A,ROW(A2)+COLUMN(A2)*50-50,1)) D2 =IF(INDEX($B:$B,ROW(A2)+COLUMN(A2)*50-50,1)="","",INDEX($B:$B,ROW(A2)+COLUMN(A2)*50-50,1)) にして下さい。

6338-tm
質問者

お礼

SI299792様 ご回答ありがとうございます。 申し訳ありませんが、VBAを希望しております。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

C2 =INDEX(A:A,ROW(A2)+COLUMN(A2)*50-50,1) D2 =INDEX(B:B,ROW(A2)+COLUMN(A2)*50-50,1) として、右下 101行までコピペすれば、関数でできます。 値にしたければ、コピー、形式を選択して貼り付け、値を行ってください。 どうしてもVBA がいいなら、作りますが、これから忙しいので明日になります。他の人に作ってもらった方が早いです。

6338-tm
質問者

お礼

SI299792様 ご回答ありがとうございます。 申し訳ありませんが、VBAを希望しております。

関連するQ&A