- 締切済み
1000行程あるデータを、10行単位する方法を教えてください。
いつも御世話になっております。 最近VBAを始めました。以下の方法が分からず、煮詰まっております。 A列に1000行程データが入力されています。 これを、別シートにて10行単位に区切って、 A列 10行,B列 10行,C列 10行・・・・・・・ としたいのですが、 どうしたらよいでしょうか? 以前は、コピぺを手動で行っていたようなのですが、 このような作業が、特定の週に5回程発生するので VBAで行えたらと思っております。 ちなみに、データの件数は毎月500件~1000件の間を変動します。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- argument
- ベストアンサー率63% (21/33)
こんにちわ zo-r さん まだ寒いですね。二度目の風邪を引いたようです。もしかたらインフルエンザでしょうか?・・。まぁ、そんなことはどうでもいいですね。 条件は以下の通りであっていますか? ・データはA列にある ・データは500~1000で可変する ・データは別シートに出力する事 ・データは10行ごとにA・B・C・・・と右にシフトする事 脳内打ち込みなので多少不安ですが以下のように書けばいいでしょう。 長いですが一行ですので貼り付け呼び出すだけで構いません。 sub cut1000to10():for i = 1 to range("A65536").end(xlup).row:sheets("Sheet2").cells(j,k).value=sheets("Sheet1").cells(i,1).value:do while j > 9:j=0:k=k+1:exit do:loop:j=j+1:next:end sub さて、実行してみたでしょうか?シート1に1~65536行のデータ(横の限界は行より少ないため多すぎると×ですが・・)に対し、シート2に10行ずつ、また横にA・B・C・・・・・とずれながらデータを出力できたでしょうか? 処理は人間がやっても機械がやっても同じです。 ただし、高速かつ確実なのが機械まぁ、今回で言えばマクロですね。 マクロは別に難しくありません。小学生でも作れます。 ただ問題はどう処理すればいいか?だけなのです。 シート1A列にあるデータを1セルずつ読み取り、シート2に貼り付ける その際、10貼り付ける毎に右へずらして貼り付ける。 これをシート1A列の行があるだけ繰り返す。 これが簡易ロジックです。これだけわかれば誰でもできます。 つまり、このロジックがわかるのにもかかわらずVBAソースが全く脳内に浮ばないならばあなたはVBAの質問をするには少々条件が足りていません。 さて、もしもこの回答が条件をみたしていたならば私にはポイントを振らずにちゃちゃっと終了してください。間違っていたら書き直します。
- nattocurry
- ベストアンサー率31% (587/1853)
とりあえず、行数が1000行固定の場合は、これで大丈夫。 Dim i For i = 0 To 99 Cells(1 + i * 10, 1).Resize(10).Cut Destination:=Cells(1, 1 + i) Next i あとは、勉強して、必要に応じて修正を加えてください。
お礼
ありがとうございます。 お礼が遅くなってしまい申し訳ありません! 午後からPCの入れ替え作業が入ってしまいました。 教えていただいたVBAを元に、いろいろ修正を加えたところ、 希望通りの動きができるようになりました。 更に勉強をしていきたいと思います。 ありがとうございました。
- fujillin
- ベストアンサー率61% (1594/2576)
(1)10行をコピペするループを作成 (2)この外側に、新規ペースト対象シートを作成するループを作成 (2)が入力のある行について繰り返されるようにすればよいだけです。 最初に、考え方を整理し、部分に区切って作成してゆけば比較的簡単に作成可能です。 (半分はマクロの自動記録で可能。 ループについては、VBAでは今後と も基本的に必要なことですので、この機会に学習してください。)
お礼
お礼が遅くなってしまい申し訳ありません! 午後からPCの入れ替え作業が入ってしまいました。 アドバイスを元にいろいろ試してみたところ、 希望していた動きができるようになりました。 まだまだ、VBAの考え方などが理解できてないので、 とても勉強になりました。 ループなど基本的なものをしっかり勉強していきたいと思います。 ありがとうございました。
お礼
ありがとうございます。 とても勉強になりました。 VBAを始めて、まだ日が浅いこともありますが、 まだまだ勉強不足で、ロジックも上手く描けていませんでした。 更なる勉強をしていきたいと思います。 ありがとうございました。