• ベストアンサー

繰り返し1行~28行までを順順にコピーする方法

(B1:B28)を選択しD2に貼り付け(値・行列入れ替え) (B29:B56)を選択しD3に貼り付け(値・行列入れ替え) (B57:B84)を選択しD4に貼り付け(値・行列入れ替え) : : : といった感じに28個セルを選択し順順に貼り付けていく作業を行っているのですが330回くらい繰り返すのであまりに大変なのでマクロを作成しました。やはり途中で操作ミスなどありましたがなんとか記録できました。 しかしこれはVBAで作成すればもっとスマートにできるかな?と思い質問させて頂きます。 どなたかわかる方いれば宜しくお願いします。

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

  • ベストアンサー
回答No.3

こんな感じ? Sub Transpose28() Dim i As Integer Application.ScreenUpdating = False For i = 1 To 330 Cells(i * 28 - 27, 2).Resize(28).Select Selection.Copy Cells(i + 1, 4).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Next Application.CutCopyMode = False Application.ScreenUpdating = True End Sub

masa2000z28
質問者

お礼

ありがとうございます。 おかげでかなり楽な作業になりました。 またよろしくお願いします。

その他の回答 (5)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.6

セルD1に  =INDIRECT("B"&(ROW()-1)*28+COLUMN()-3) を入力して、必要なだけコピーしてもできますね。 皆さんと同じようなマクロですが、Forループから数値をとってみました。 最終行をシートの一番下から探しています。 Sub DataCopy()   Dim rw As Long '行カウンタ   Application.ScreenUpdating = False '画面更新を止める   'B列の入力されている最後まで、B1から28個飛びで処理していく   For rw = 1 To Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row Step 28     '行方向のコピー。28個     Range(Cells(rw, 2), Cells(rw + 28 - 1, 2)).Copy     '列方向に貼り付け。コピー開始行から貼り付け先の行番号を計算。列はDなので4     Cells((rw - 1) \ 28 + 1, 4).PasteSpecial Paste:=xlValues, Transpose:=True   Next   Application.ScreenUpdating = True '画面更新 End Sub

masa2000z28
質問者

お礼

D1のセルに入力するだけでもできるとは・・・・ まだまだ色々勉強していきたいとおもいます。 ありがとうございます。

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

先に回答されている方と同じですが、極く短く Private Sub CommandButton1_Click() j=2 for i=1 to 200 step 8 ’200は仮の例 Range(Cells(i, 1), Cells(i+8, 1)).Copy 'A列について Cells(j, 2).PasteSpecial Paste:=xlValue, Transpose:=True j=j+1 ’B2からよこに、B3からよこに、B4から横に・・・値だけコピー next i End Sub テストをし易くするため28個を8個の縦の数値を横にする例に変えました。

masa2000z28
質問者

お礼

ありがとうございます。 こんなに短くできるんですね。。 もっと勉強したいとおもいます。 ありがとうございました。

回答No.4

再び。すみません、補足を読んでいませんでした。 Paste:=xlAll は Paste:=xlValues に替えて下さい。

  • stork
  • ベストアンサー率34% (97/285)
回答No.2

常に28行コピーするのであればループさせればよいだけだと思います。 loopとかnextとかでヘルプを参照してください。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

意味不明なのですが・・・ とりあえず、この書き込みを見た人の多くは Step 27 という文字がうかんでいると思うのですが、処理の内容がよくわからないために、回答をできないでいるのだと思います。 複数行のコピーを繰り返してますが、貼り付け先は[D2/D3/D4]と範囲を持っていません。 これでは直前に貼り付けた値が、常に上書きされるはずです。 また >(値・行列入れ替え) の部分は、全くどのような法則で行われているのか全く記述されておりません。 質問エリアは800文字しか記入できませんが、補足欄には文字制限が無いので、できたら記録したマクロコードを貼り付けてもらえませんか? その方がみんなもわかりやすいと思います。

masa2000z28
質問者

補足

申し訳ございません。説明不足でした、補足させていただきます。 B1:B28を選択しコピーします。 D1を右クリックし「形式を指定して貼り付け」を選び「値」と「行列を入れ替える」を選択し(演算の項目はしないのままです)貼り付けを行います。 行列を入れ替えて貼り付けているので <B1:B28→D1:AE1>に貼り付けとことになります。 下記がコードになります Range("B1:B28").Select Selection.Copy Range("D1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Range("B29:B56").Select Application.CutCopyMode = False Selection.Copy Range("D2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Range("B57:B84").Select Application.CutCopyMode = False Selection.Copy Range("D3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True お願いします

関連するQ&A

  • 行コピーして、今日の日付の行に貼り付けるマクロ

    こんにちは、エクセルマクロについて、助けて頂きたく質問させていただきました。 添付しました画像のような表があり、 セルA2に「=TODAY()」が入っていて、セルB2から右は別シートのデータを参照しています。 マクロを実行すると、2行目を行コピーし、セルA3以下の日付からセルA2の日付(今日の日付)を探し出して、行貼り付けしてほしいです。 行コピーや値で貼り付けはマクロの記録を使って、詳しくない私でもなんとか作ることはできるのですが、 今日の日付を探し出して、そこに貼り付ける。というマクロは作れませんでした・・・。 お助け下さい、宜しくお願いします! ※補足します セルA2の今日の日付は便宜上入力しているだけです。無い方がマクロを組みやすいのなら、無くせます。

  • Excelで「形式を選択して貼り付け」のマクロの作り方

    WinXPです。 Excelで 1.コピー元セルの値をコピーします。 2.コピー先セルを選択します。 3.コピー先セルを右クリックして 4.「形式を選択して貼り付け」を選択します。 5.「罫線を除く全て」を選択します。 ここでコピー元セルもコピー先セルも位置関係はなくランダムです。 上の4.5.のみのマクロを作りたいのですが うまくいきません。 VBAは全くわかりませんが、以前5.の部分が「値」に したものをカーソルの操作を記録することにより 作ってあります。(Win98ですが) したがって今回も5.が違うだけですから 同様にできると思うのですが 昔のことで方法が忘れてしまいました。 単純に4.5.をマクロに記録して、実行したら 「シンジのメソッドが・・・」というエラーに なってしまいました。 よろしくお願いします。

  • エクセル 行 列 入れ替え

    エクセルで行列入れ替えをしたいのですが、 >貼り付け>(S)形式を選択して貼り付け… としたいのですが、この項目が選択できません。 データは、1行で列項目がB~ASまであります。 よろしくお願いいたします。

  • エクセル2003 数式を値で挿入する方法 

    EXCEL2003 VLOOKUPでだした値と書式を 他シートに挿入したい。 VLOOKUPで作成した表を 形式で選択 値で貼り付けではなく 挿入したい のです。   現在 値の行列だけ 行挿入をし 形式選択で値を貼り付け 値と元の書式を選択して行列を貼り付けています。 これをマクロ以外でできる方法はないでしょうか? よろしくお願いします。

  • 複数選択したセルを含む行をまとめてコピー

    VBA初心者です。EXCEL2003を使用しています。 ◆やりたい事  ユーザーにセルを指定させ、そのセルを含む行をまとめてコピーして新規のブックに貼り付けたい。 ◆条件  ・ユーザーが指定できるセルはB列だけにしたい。   (B列以外を選択したらメッセージを表示して再選択させる)  ・ユーザーが指定できるセルは(連続・不連続問わず)最大8個までにしたい。   (未選択 or 8個以上ならメッセージを表示して再選択させる)   ◆完成イメージ  ・ユーザーがセル(ex.B4,B6:B8,B20(=計5行))を選択  ・マクロ実行(コマンドボタンを押す)  ・新規ブックのsheet1.range("A1")に貼り付け(=A1:A5に 貼り付く) こんな感じなんですが、なにとぞ御教授願います。

  • 条件付き書式のコピー&ペーストの簡略化について

    エクセル初心者です。具体的に書かせて頂きますと、1~31までのシートがあります。シート1のセルB1~B10に条件付き書式が入っているセルを、シート2~31までの同じ B1~B10に貼り付けする作業を、今まではマクロの記録で地道にコピペしていたのですが、VBAでもっと簡単に出来ないか、色々参考書をみながら試行錯誤しているのですが、上手く行きません。 もしよければ、ご教授ください。よろしくお願いします。

  • 別のexcelにコピペしたい

    お世話になります。 ExcelファイルのAとBがあります。 Aから、「複数セルを選択」して、Bに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Aの任意の連続したセルを選択してコピー (2)Bに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Aのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? お手数ですが宜しくお願い致します。

  • コピー貼り付けのマクロの処理時間の早い方法を教えてください。

    ある表の中から部分的にセルを指定して抜き出して、 別の表を作成しています。 コピーする範囲のセルが連続して繋がっていないので、 セルを一つづつ指定してコピーして貼り付ける動作をマクロの自動記録で登録しました。 コピー貼り付けの回数が100セル分ほどあるので、処理時間が遅いです。 目で見て順番にデータがコピーされて行くのが分かるくらいです。 この動作をもっと速くするマクロを教えてください。 実際の表ではコピー元(sheet1)のA5→コピー先(sheet2)C1、 以下同じくコピー元は全て(sheet1)でコピー先は(sheet2)です。 A8→C2、A11→C3、A14→C4、A17→C5,・・・・ B2→D1、B12→D2、B22→D3、B32→D4,・・・・ このような感じでコピーします。 *コピー元のsheet1の指定セルは毎回同じ場所です。 コピー先も毎回同じセルです。 宜しくお願いします。

  • Excelでのコピー貼り付けを繰り返すマクロ

    B4セルをコピーしてB5に貼り付け。 B6セルをコピーしてB7に貼り付けという感じで、コピーと貼り付けを連続して行いたいです。マクロの記録でやっていけると思い色々やっていますが、どうもうまくできません。 皆さん教えて頂けませんか。

  • エクセルで縦列を横列にコピーしたい

    エクセルで縦列のデータを横列にコピーしていきたいのです。例えばA40のセルに「=G3」と入力し横にコピーしていくとB40には「H3」、C40には「I3」、D40には「J3」・・・・となります。そうではなく、B40には「G4」、C40には「G5」、D40には「G6」・・・・の値が入るようにしたいのです。この場合A40のセルにどのような式を入力してコピーしていけばいいのでしょうか。(複数列あり「形式を選択して貼り付け-行列を入れ替える」では上手くできません。)

専門家に質問してみよう