質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

2222閲覧

【VBA】コピーして後ろにペースト(繰り返し)

G-Cocoa

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2018/09/07 09:23

編集2022/01/12 10:55

VBA初心者、勉強中です。
よろしくお願いいたします。

こちらのデータを以下のように

ABCDEFGHIJKLMNO
19/1Aさんクレジットりんご2005
29/1Aさんクレジットバナナ1002
39/1Aさんクレジットみかん5001
49/1Aさんクレジットすいか10001
59/1Bさん現金バナナ10010
69/1Bさん現金いちご5002
59/1Cさん現金りんご2004
69/1Dさんクレジットすいか1002

完成イメージ

ABCDEFGHIJKLMNO
19/1Aさんクレジットリンゴ2005バナナ1002みかん5001すいか10001
29/1Bさん現金バナナ10010いちご5002
39/1Cさん現金りんご2004
49/1Dさんクレジットすいか1002

A・B・Cが同じ場合
D・E・Fを後ろにコピー
行を削除し上に詰める

お力をお貸しください。
よろしくお願いいたします。


9/8 追伸 マクロの記録

lang

1Sub Macro1() 2 3 Sheets.Add After:=Sheets(Sheets.Count) 4 Sheets("Sheet1").Select 5 Range("A1:F1").Select 6 Selection.Copy 7 Sheets("Sheet2").Select 8 ActiveSheet.Paste 9 Sheets("Sheet1").Select 10 Range("D2:F2").Select 11 Application.CutCopyMode = False 12 Selection.Copy 13 Sheets("Sheet2").Select 14 Range("G1").Select 15 ActiveSheet.Paste 16 Sheets("Sheet1").Select 17 Range("D3:F3").Select 18 Application.CutCopyMode = False 19 Selection.Copy 20 Sheets("Sheet2").Select 21 Range("J1").Select 22 ActiveSheet.Paste 23 Sheets("Sheet1").Select 24 Range("D4:F4").Select 25 Application.CutCopyMode = False 26 Selection.Copy 27 Sheets("Sheet2").Select 28 Range("M1").Select 29 ActiveSheet.Paste 30 ActiveWindow.LargeScroll ToRight:=-1 31 Sheets("Sheet1").Select 32 Range("A5:F5").Select 33 Application.CutCopyMode = False 34 Selection.Copy 35 Sheets("Sheet2").Select 36 Range("A2").Select 37 ActiveSheet.Paste 38 Sheets("Sheet1").Select 39 Range("D6:F6").Select 40 Application.CutCopyMode = False 41 Selection.Copy 42 Sheets("Sheet2").Select 43 Range("G2").Select 44 ActiveSheet.Paste 45 Sheets("Sheet1").Select 46 Range("A7:F7").Select 47 Application.CutCopyMode = False 48 Selection.Copy 49 Sheets("Sheet2").Select 50 Range("A3").Select 51 ActiveSheet.Paste 52 Sheets("Sheet1").Select 53 Range("A8:F8").Select 54 Application.CutCopyMode = False 55 Selection.Copy 56 Sheets("Sheet2").Select 57 Range("A4").Select 58 ActiveSheet.Paste 59 60End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n_takapyon

2018/09/07 09:54

マクロの記録でも良いので手順をコード化しましょう
n_takapyon

2018/09/07 09:57

このままでは丸投げになっていると思います。
G-Cocoa

2018/09/07 11:41 編集

すいません。初心者過ぎてまだ専門用語も理解してない状況です。マクロの記録、手順のコード化ですが検索してみたものの理解出来ずにおります。 また、色々試して実行したのですが 全くうまくいかず、何をどうすればいいかわからない状態です。
m.ts10806

2018/09/07 11:49

試して実行してうまくいかなかったコードを提示して何がどううまくいかなかったのか説明した上で質問するのがteratailの基本的な使い方です。
guest

回答2

0

勉強中という事なのでヒントだけ。
「VBA ピボットテーブル」

投稿2018/09/08 03:26

編集2018/09/08 03:55
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/09/08 03:56

失礼しました。あまりよく確認せずIMEの候補選んでました。
G-Cocoa

2018/09/08 05:08

ヒントありがとうございます。 for if next を使用して考えておりました。
guest

0

ほかの型のピボットテーブルを使った方法などが速いですが、あえてプログラムをVBAで組むというチャレンジも面白いかもしれません。

たとえば、

  • 9/1 Aさん クレジット

   りんご 200 5
バナナ 100 2
みかん 500 1
すいか 1000 1

  • 9/1 Bさん 現金

   バナナ 100 10
いちご 500 2

こんな風に「A~Cの情報」の下に、A~Cが同じものばかりの情報をぶら下げる形で情報を仕分けすれば、あとはExcelにどのように表示するかという問題だけになります。イメージとしては

  • 9/1、Aさん、クレジットのバスケットにそのD~Eの情報を入れる
  • 9/1、Bさん、現金のバスケットにD~Eの情報をいれる……

のように情報を仕分けていきます。これをVBAで実現するのがプログラミングです。いきなりExcelの機能で実現しようとするのではなく、まずは手作業でやるとしたどうするだろう?という手順を組み立ててみましょう。あとは、それをExcel VBAの命令を使って書き換えていくだけです(簡単ではないですよ)。

また、A~Cが同じものの後半を後ろに並べる、というように一度に作業しようとするのではなく、

  1. 仕分け処理
  2. 仕分けされた情報それぞれをExcelに整形して表示する処理

こういう風に作業を分ければ、まずはデータを仕分けることに集中。次は、仕分けしたデータすべてを繰り返し処理(For文など)で順にExcelのシートに貼り付ける、というように、作業1つ1つが細かくなって実現しやすくなります。

お求めの答えとは違うと思いますが、初心者といわれているのでおそらくこのあたりの「考え方」から学んで行かれたほうが良いかと思います。もしお時間があるようなら、トライしていってみてください。

投稿2018/09/10 00:59

backyard

総合スコア534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

G-Cocoa

2018/09/11 08:02

アドバイスありがとうございます。 「考え方」とても参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問