- ベストアンサー
Excelでデータを合体させるVBAプログラムを教えてください
- Excelで別々のデータを合体する処理を自動化するためのVBAプログラムを教えてください。具体的には、2つのExcelファイルにあるデータを合体させて、リストを作成し、CSV形式で出力したいです。
- 現在は手作業でデータのコピーアンドペーストを行っていますが、効率的な方法を探しています。
- また、VBAを学ぶためにおすすめの書籍があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excel の VBA はよく知りませんがたたき台にはなるかと・・ Sheet1(一番左側のシート)に A B C D E F 1 boy 空白 1 I am a ( ). 私は少年です。 I am a (1). 2 dog 空白 2 This is a ( ). これは犬です。 This is a (1). ・・・・ があって、A列は連続していて途中に空白が無いものとします。 Sheet2(左から二番目のシート)に A B C 1 カテゴリ名 問題 回答欄 2 1-1 空白セル1 空白セル2 3 解答番号 回答 4 1 空白セル3 だとします。 Sheet3(左から三番目のシート)がまっさらな状態であるとします。 標準モジュールに下記をコピペ Sub test() Dim r As Integer r = 1 Do Until Worksheets(1).Cells(r, 1) = "" Worksheets(2).Cells(2, 2) = Worksheets(1).Cells(r, 4) _ & vbLf & Worksheets(1).Cells(r, 5) Worksheets(2).Cells(2, 3) = Worksheets(1).Cells(r, 6) Worksheets(2).Cells(4, 2) = Worksheets(1).Cells(r, 1) Worksheets(2).Range("a2:C4").Copy Worksheets(3).Cells((r - 1) * 4 + 2, 1) r = r + 1 Loop MsgBox "おしまい" End Sub これを実行するとSheet3に望むもの(に近い)のができると思います。Excel2010で検証。 すでにデータは入力済みでしたら、 何があっても良いようにファイルのバックアップは必ず取ってからお試しください。
その他の回答 (2)
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
>現在はコピペ作業をすべて手作業でやっています・・・・ もう少しだけ時間掛かるけど... Excel VBA 入門講座 http://excelvba.pc-users.net/ Excel VBA 入門講座へようこそ!! このサイトはExcelの入門書レベルの学習を一通り終え、更にExcel VBAの知識を身に付けたいと考えている方を対象としています。 このサイトによりExcel VBAの魅力を体験していただければ管理人としては最高の喜びです !! (*^ ^*)
お礼
回答ありがとうございます。 一応、テキストは2冊持っているのですが、まだまだ便利なサイトもあるのですね。 No1の方も参考URLを出していただいているのですが、そこまで学習している時間がなかったので、質問させていただいたのですが・・・ でも、参考になりました。ありがとうございました。
- atamagawarui5
- ベストアンサー率25% (112/440)
>また、ついでで結構ですのでVBAを学ぶための良書があれば教えてください。 どうぞよろしくお願いいたします。 http://www.moug.net/ http://home.att.ne.jp/zeta/gen/excel/ 今から覚えるなら、説明とか面倒くさいので、マクロの自動自動入力で覚えさせて、それを触ればいいかと思います。 1から組んで貼り付けする暇が有れば、別の事します。
お礼
回答ありがとうございます。 張り付けていただいたページの2個目は知らなかったので参考になりました。今後の勉強に生かしたいと思います。 自分では2冊、本は購入して勉強中です。 ありがとうございました。
お礼
ご回答ありがとうございます。 かなり近いものができました! 全部代入してからテンプレごとコピーするという発想はなかったので大変助かりました。 7行目と9行目のセル参照値を少し変え、だいぶ近づいてきています。 少し変更したいところや、今回の質問に入れていないところもあるので、参考書や前のかたに提示していただいた参考サイトを参照しながら完成形に近づけていきたいと思います。 本当にありがとうございます!!