• ベストアンサー

エクセル2010の内容を次のシートに自動で出したい

エクセル2010でAからAQまで60行の表を作りました。 これの1行目のAから10行目のAQまでを次のsheetに自動的に出して11行目のAから10行目のAQまでをその次のsheetに自動的に出したいのですが、どう

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

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

文章だけ書いて、全部のコード作成を要求する、丸投げではないか。 VBAの最低限を勉強して無いのに、やりたいことだけは一人前とかの状態ではないか。 ーー 思考過程の1例を示してみる。 マクロの記録を3シート分ぐらい取って(コピー貼り付けが中心)、コードをじっくりながめて、似たもののコードの3回繰り返しになっているが、コードは1回分にして、実行時には指定回の繰り返し作業のコードにするには、何処を変えれば良いか、考えて見ればよい。 ーー 1-10  行 11-20 21-30 ・・ は i 回目はどうなるか考えたか。中学受験の算数の問題だ。 Sub test01() For i = 1 To 4 n = (i - 1) * 10 + 1 Range("a" & n & ":C" & n + 9).Select MsgBox "a" Next i End Sub をやって納得してみたら。 但し、例なので判りやすいように C列までにしているーー>AQに拡げるのは判るだろう。 繰り返しを4回にしているーー>最終行をとらえて10で割り、+1した回数が、繰り返し必要回数だ。 MsgBox "a"はそこで止めて、シートの選択範囲を見せるためのもの。本番では関係ない。 最終行の行番号をとらえるコードは、知っているのかな。Googleで「エクセルVBA 最終行」で照会したら。 ーー コピー貼り付けは XXX.Copy 新シート.Range(”A1”) XXXはコピー元のセル範囲だ(上記で説明) 新シートは、となりのシートということで、シートIndexを+1すると指定できる。 それには、初心者は必要数シートを操作で作って(挿入しておいて)、コードが難しくなるのをさける、のがよかろう。 2つのシートを扱うので、それを指定するやり方の習得必要(略)。

monikochan
質問者

お礼

ありがとうございました

その他の回答 (2)

  • muunoy
  • ベストアンサー率38% (70/183)
回答No.2

質問内容の処理をそのまま実行すると、 1.A1:AQ10のデータを次のシートにコピー 2.A11:AQ20(読み方によってはA11:AQ10ともとれますが、それはないかと。)をそのまた次のシートにコピー ※A21:AQ60のデータは特に処理なし ということになってしまいますが、大丈夫ですか? A1:AQ60にある表を、10行ずつ6シートに分割する処理ではないのですか? 違っていたらすみません。 「自動的に出したい」とのお話から、繰り返し行わなくてはならない処理なのだろうとも予想しました。 自分であれば、VBAマクロを作成して対応します。 もし、60行のデータを10行ずつ別々シートに分割する処理なのであれば、一度マクロを記録しておくだけでも済みます。 また、気になったのは、マクロや数式を使用するとしたら、表示形式等のセルの書式設定はコピーしなくて問題ないかという点です。 データの種類や分割したデータの使い方など、もう少し詳しい情報があった方が、作業にあった方法を考えやすいかと思います。現在の表を、そのまま使う方法もあるかも知れません。

monikochan
質問者

お礼

ありがとうございました

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ぶっちゃけ言えば, 元シートのA1:AQ10をコピーする 1枚目のA1に型式を選んで貼り付けの「リンク貼り付け」をクリックする 元シートのA11:AQ20をコピーする 2枚目のA1に型式を選んで貼り付けの「リンク貼り付け」をクリックする  : を合計6回手を動かして作成するのが,一番簡単確実で手間の少ない方法です。 6回手を動かすのもイヤでたまらないのでしたら,もっと手数が多い次のような段取りもあります。 元のデータを「元データ」というシートに記入する Sheet1からSheet6まで6枚のシートを用意する ブックを一度保存する 6枚のシートを作業グループにする A1:AQ10を選択する =OFFSET(INDIRECT("元データ!A"&((RIGHT(CELL("Filename",A1))-1)*10+1)),ROW()-1,COLUMN()-1) と記入し,コントロールキーを押しながらEnterで入力する。

関連するQ&A