• 締切済み

1000行程あるデータを、10行単位する方法を教えてください。

いつも御世話になっております。 最近VBAを始めました。以下の方法が分からず、煮詰まっております。 A列に1000行程データが入力されています。 これを、別シートにて10行単位に区切って、 A列 10行,B列 10行,C列 10行・・・・・・・ としたいのですが、 どうしたらよいでしょうか? 以前は、コピぺを手動で行っていたようなのですが、 このような作業が、特定の週に5回程発生するので VBAで行えたらと思っております。 ちなみに、データの件数は毎月500件~1000件の間を変動します。 よろしくお願いします。

noname#76504
noname#76504

みんなの回答

  • argument
  • ベストアンサー率63% (21/33)
回答No.3

こんにちわ 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の質問をするには少々条件が足りていません。 さて、もしもこの回答が条件をみたしていたならば私にはポイントを振らずにちゃちゃっと終了してください。間違っていたら書き直します。

noname#76504
質問者

お礼

ありがとうございます。 とても勉強になりました。 VBAを始めて、まだ日が浅いこともありますが、 まだまだ勉強不足で、ロジックも上手く描けていませんでした。 更なる勉強をしていきたいと思います。 ありがとうございました。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

とりあえず、行数が1000行固定の場合は、これで大丈夫。 Dim i For i = 0 To 99 Cells(1 + i * 10, 1).Resize(10).Cut Destination:=Cells(1, 1 + i) Next i あとは、勉強して、必要に応じて修正を加えてください。

noname#76504
質問者

お礼

ありがとうございます。 お礼が遅くなってしまい申し訳ありません! 午後からPCの入れ替え作業が入ってしまいました。 教えていただいたVBAを元に、いろいろ修正を加えたところ、 希望通りの動きができるようになりました。 更に勉強をしていきたいと思います。 ありがとうございました。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

(1)10行をコピペするループを作成 (2)この外側に、新規ペースト対象シートを作成するループを作成 (2)が入力のある行について繰り返されるようにすればよいだけです。 最初に、考え方を整理し、部分に区切って作成してゆけば比較的簡単に作成可能です。 (半分はマクロの自動記録で可能。 ループについては、VBAでは今後と  も基本的に必要なことですので、この機会に学習してください。)

noname#76504
質問者

お礼

お礼が遅くなってしまい申し訳ありません! 午後からPCの入れ替え作業が入ってしまいました。 アドバイスを元にいろいろ試してみたところ、 希望していた動きができるようになりました。 まだまだ、VBAの考え方などが理解できてないので、 とても勉強になりました。 ループなど基本的なものをしっかり勉強していきたいと思います。 ありがとうございました。

関連するQ&A

  • ExcelSheet1のデータから、指定したデータをSheet2に一括出力する。

     ExcelSheet1に約4000件(1行)のデータを入力しています。  そのデータから指定した100件のデータを、VBAで一括してSheet2に出力するマクロを教えてください。  Sheet1のA列には、主キーとして(0001~9999)の文字列をいれています。  

  • エクセルのあるシートの内容を条件毎に行単位で複数のシートに振り分けるには?

    エクセルのあるシートにある元データのA列を参照して同じものだけを行単位で抜き出し、別にある50個のシートに振り分けたいのですが、手作業でコピーする以外に何か良い方法はないかと思い、質問させていただきました。 下の例で行くと行1と2は列Aが同じ「たろう」なので、同じシート2へ、行3と4は「はなこ」なので、同じシート3へといった具合です。 元データ(シート1、毎月更新)   A   B C D E 1たろう  1 2 3 4→シート2へ  2たろう  4 5 6 3→シート2へ 3はなこ  7 8 9 2→シート3へ  4はなこ  1 2 2 1→シート3へ 5じろー  3 4 4 3→シート4へ 6さぶろー 5 4 3 1→シート5へ シート2:たろうのデータ2行のみ表示 シート3:はなこのデータ1行のみ表示 シート4:じろーのデータ1行のみ表示 シート5:さぶろーのデータ1行のみ表示 問題は、元データは別のソフトからエクスポートされたもので、毎月更新するたびに行数が増えたり減ったりして内容が変わってしまうところです。例えばたろうが今月は2行あったけど、来月は1行になってしまうといった具合です。各シートも元データの更新内容に従って、毎月更新する必要があります。 関数は使ったことがありますが、これは関数で実現できるのでしょうか?何となく出来ないような気がしています。やはり高度な技が必要なのでしょうか。その場合は私には難しいかもしれませんが、とにかく何かお知恵をいただきたくよろしくお願いいたします。

  • EXCELでデータを抽出してコピペしたいです

    指定した日付より、それ以前の誕生日(指定日も含む)の人だけを抽出してコピペしたいのですが WORKBOOK1のSHEET1(名簿)のH列に生年月日(他の列にもデータあります) データは、1200件(行)あります。 WORKBOOK2のSHEET1(該当者)名簿と配列は同じです。 A1に指定の日付をいれます。 WORKBOOK1のSHEET1(名簿)より抽出したデータのペースト位置は、A3からです。 VBAで可能でしょうか?

  • ExcelVBA: 5行ごとにテキストデータをINPUTしたい。。

    Excel VBAで、 氏名データのみのデータファイルをOpenして、シートにInputで読み込もうとしますが、この読み込むときに、シートのA列に5行ごとに次々に読み込んでいきたいのですが、お教え下さい。 つまりA5に1番目のデータを、A10に2番目のデータをといった感じです。 だれか分かる方、お教え下さい。

  • Excel 任意の行数・列数のデータを合体VBA

    VBAで、Sheet1のデータの最終行に Sheet2の同じ並びのデータを続けてくっつけ、 Sheet3に(Sheet1とSheet2のデータが)連続した状態をつくる場合のVBAの書き方を教えてください。 ちょうどSheet1のブルーの範囲(ただし最終行はn行=データは様々で最終行は不特定だが最終行の下にはもうデータはない、最終m列の右にはまだデータが膨大にあるが、今回はA~m列(ここではA~AX列と指定可能)をコピーしたい) に Sheet2の黄色い範囲(ただし最終行はn行=データそれぞれで不特定だが最終行の下にはもうデータはない、最終m列はSheet1と同じ構成=A~AX列) をくっつけたい。 ・アウトプットはSheet3。 (Sheet1とSheet2はいじらずそのまま残す) ・コピーして貼り付ける(複写する)のは、値だけ (罫線とか計算式は不要) です。 よろしくお願いします。

  • エクセルで1行ごとに空白行を挿入し、挿入した空白行に色をつけたいです

    タイトルの通りです。 エクセル(2000)で、データはシート毎に件数が違います。 各シート毎にそれぞれ1行毎、空白行を挿入し、挿入した空白行のA列~G列までに薄いグレーの色をつけるマクロを入れたいのですが、うまくいきません。 詳しい方、教えて下さい。

  • 最終データまで下方に繰り返すマクロ

    office xp excel シート1A1:H100 の表があるとします。 A3からデータが入っています。 A3:H8を選択し、シート2のA3:H8にコピペします。 次にシート1に戻ってA9:H14を選択して、シート2の同じA3:H8に上書きコピペします。 これをA100まで繰り返しますが、途中でデータがなくなればそこで終了します。 この6行8列をひとつの選択単位として下方にずれていくにはどういうマクロを組めばいいですか?

  • EXCEL2000でデータ行コピーしてコピーした列のセルを置換する作業をカンタンにする方法をご教授ください

    EXCEL2000を使っています。 データとしては、A~BC列(シートによって列数は違います)くらいまでのシートが複数あります。 これらのシートのA列には必ず西暦4桁が入力されています。 Sheet1シートのA列に2007と入力されている複数行をコピーして、最終行に貼り付けて、貼り付けた行のA列を2004から2008までのデータに置き換えていく作業を行ってます。 今はコピーして貼り付けて、貼り付けた範囲指定で2007から2004へ置換の作業を繰り返しておりますが作業しなければいけないシート数が沢山あって苦慮しております。 シート毎でもブック毎でも構いません。 VBA等の解決策や方法等を何卒ご教授願います。

  • エクセル 複数行にまたがっているデーターを一つの行

    以前に似たようなVBAの質問を元にさらにやりたいVBAがあるのですが、 (前の質問者のURL:http://okwave.jp/qa/q4955096.html)       A列  B列   C列   D列   E列 ~ R列 1行目  佐藤 北海道 りんご S 100 105 2行目  佐藤 北海道 ばなな M 100 105   3行目 伊藤  東京  いちご S 100 105 4行目  伊藤  東京  ばなな M 100 105 上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列      C列 1行目  佐藤 北海道  りんご,ばなな  S,M 2行目  伊藤  東京   いちご,ばなな  S,M A列とB列とE列~R列のデーターが同じでC列,D列,のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • Excelで列に入っているデータを行に展開する方法

    添付画像のように、Excelシート上のA列に、店名、住所、電話番号が全て入っている状態を、A列に商店、B列に住所、C列に電話番号というように振り分けたいです。 シート上のデータは、既に振り分けてあるものと振り分けていないものが混在しています。 振り分けていないものは、店名と電話番号だけ、店名と住所と電話番号といったパターンがあります(他に、店名とメールアドレスだけの様なパターンも)。 店名+電話番号、店名+住所+電話番号 のパターンはある程度かたまっているため、Sheet上で範囲を手動で選択して、行への展開を実行したいと思っています。 関数かVBAで効率よく実行する方法を教えてください。 Excel2010です。