実現したいこと
1000行以上あるExcelの表で見た目をわかりやすくするために、50行前後で区切って同シート内に転記したい。
発生している問題・分からないこと
添付画像のように、グループごとに行数が異なるExcelの表があり、
見た目をわかりやすくするため、50行前後の表に変更したいのですが、
変更後の表の行数が一定にはならないので、コードの書き換え方がわかりません。
下記ソースコードは100行ごとにデータ分割して別シートへコピーに掲載されていたものです。
また、下記のコードは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
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
特定の行数で転記する方法は多く見つけられたのですが、
行数がランダムになる場合の方法を見つけることができませんでした。
追記
最大列数を意識していますか?
あなたが提示されたコードは、以下のようになっています。
1.元のデータを100行単位で、他のシートにコピーする。
2.コピー対象となる列は記述されている列が全て対象となる。
3.元のデータの1行目からコピーする。
あなたの要望は以下のようになっています。
1.元のデータを50行単位で同じシートにコピーする。
2.コピー対象となる列は、A、Bの2列のみである。
3.元のデータの2行目からコピーする。コピー先は、G2のセルから開始する。
上記で間違いないでしょうか。
その場合、仕様がかなり変わるので、作り直しになるかと思います。
>>logres_Fan様
ご覧いただきありがとうございます。
最大列数は意識しておりません。
ですが、データ数が多すぎるものに関しては100行前後に変更し、列数を少なくしようとは考えています。
>>tatsu99様
ご覧いただきありがとうございます。
私が実現したことはtatsu99様がまとめてくださった通りです。
仰る通り、仕様が大きく異なるものの為、提示コードでは方向性が全く異なるのですが、どう調べても私では類似コードが見つけられず、このコードを書き換えて対応してみようと思った次第です。
拙い文章の中、余計にわかりにくくしてしまい申し訳ございません。
ご回答皆様、本当にありがとうございました。
tatsu99様も親身にご対応いただき厚く御礼申し上げます。

回答3件
あなたの回答
tips
プレビュー