• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロでの繰り返し処理について)

エクセルマクロでの繰り返し処理について

このQ&Aのポイント
  • エクセル初心者の方に向けて、エクセルマクロを使用した繰り返し処理についてご説明します。エクセル2010を使用している場合、以下の手順で作業を行うことができます。
  • 1. ホームページからコピーしたページをエクセルに「テキストで貼り付け」します。その結果、A列に8行の項目が入り、空白行が自動的に挿入されます。
  • 2. マクロの自動記録を相対参照で行い、以下の作業を行います。まず、A1からA8のデータをコピーし、C1からJ1に貼り付けます。その後、次のデータのまとまりのA10のセルに移ります。Ctrl+aを押し続けることで、数百件や4000件など、データの個数に応じた並べ替えを行います。この処理をデータが存在する限り繰り返します。

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

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

"クール"なやり方もきっと色々あると思いますが,折角そこまで作ったのですからもう少し手を入れるだけで作成してみます。 Sub 行列入れ替え8行() ' ' 行列入れ替え8行 Macro ' ' Keyboard Shortcut: Ctrl+a ' ’繰り返しの開始  do  ActiveCell.Range("A1:A8").Select  Selection.Copy  ActiveCell.Offset(0, 2).Range("A1").Select  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _  False, Transpose:=True  ActiveCell.Offset(9, -2).Range("A1").Select ’繰り返し条件  loop until activecell = "" End Sub #幾つかのポイント 実際に貼り付けるデータで,たとえば「8行」の中に空白で入ってくるデータがあるのか無いのかでも,マクロの組み方が変わってくることもあります。 上述サンプルでも「8行の先頭が空白で入ってくることは無い」という未確認の前提を置いているワケですが,場合によっては「シートの最後の行」をキチンと把握してそこまで繰り返すといった作り方をすることも多いです。 例: loop until activecell.row >= range("A65536").end(xlup).row

halunatu
質問者

お礼

keithin様、 ありがとうございます! できました!自分でも、もっと勉強しなくちゃ!です。 ありがとうございました。

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

1セルだけの操作、1列だけの操作なんてのは自動マクロ作成に任せたらできます。 繰り返しや判定分岐、要は骨組みのが考えて勉強するところ。 DO文とFOR文、その使い分け、一度にたくさんやって欲しいならここの小さい機能よりこちらが先。終了判定おかしいと終わりませんから大事。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

参考 http://www.voicechatjapan.com/excelvba/VBArei2.htm ここに基本構文もあります。 例えば、 ActiveCell.Offset(9, -2).Range("A1").Select の9や-2、"A1"は変数で持たせることによって、 いろんなセルを指定できます。 ActiveCell.Offset(x, y).Range(z).Select

halunatu
質問者

お礼

   lavv様  ありがとうございます。  教えてくださったサイトも見せていただきました。私はまだまだ勉強不足で、  書いてあることがすぐには理解できませんが、試しながら、できるようになりたいと思います。  自分でマクロを1から書くことはできないのですが、自動記録したものに少し手を加えて、  使いやすくなればと思います。  ありがとうございました。  

関連するQ&A