2010-12-29 6 views
1

私はこれでnoobですので、何か助けに感謝します。列A + BをコピーしてCの値に応じて何度もsheet2に貼り付けるスクリプトを書くのに助けが必要です。下記の例を参照してください。これは私たちに膨大な時間を節約します。どんな助けでも大歓迎です。マクロシート1からシート2にコピー貼り付け

Sheet1の

A  B  C 
1111 aaaa  3 
2222 bbbb  4 
3333 cccc  2 

Sheet2の

A  B  C 
1111 aaaa  3 
1111 aaaa  3 
1111 aaaa  3 
2222 bbbb  4 
2222 bbbb  4 
2222 bbbb  4 
2222 bbbb  4 
3333 cccc  2 
3333 cccc  2 
+0

LOL。私の書式に何が起こったのか分かりません。もう一度試してみましょう。 シート1 ABC BBBB 4 3333 1111 AAAA 3 2222 CCCC 2 マクロ シート2 ABC AAAA 3 1111 1111 AAAA 3 1111 AAAA 3 2222 BBBB 4 2222 BBBB 4 2222 BBBB後4 2222 bbbb 4 3333 cccc 2 3333 cccc 2 –

+0

フォーマットを更新しましたが、テキストを選択して '{}'コードをクリックするだけで編集ボックスの上にトン。 – jball

答えて

2
Sub MakeNewTable() 

    Dim rCell As Range 
    Dim i As Long 
    Dim rNext As Range 

    'loop through the cells in column A of the source sheet 
    For Each rCell In Sheet1.Range("A1:A3") 
     'loop as many times as the value in column C of the source sheet 
     For i = 1 To rCell.Offset(0, 2).Value 
      'find the next empty cell to write to in the dest sheet 
      Set rNext = Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Offset(1, 0) 
      'copy A and B from source to the dest sheet 
      rCell.Resize(1, 2).Copy rNext.Resize(1, 2) 
     Next i 
    Next rCell 

End Sub 

あなたはあなたの状況に合わせて、シートの参照を変更する必要があります。上で使用されたシート参照は、コード名の参照です。 VBE(Control + R)でプロジェクトエクスプローラを開き、投影を拡大すると、 'Sheet1(MyTablName)'のようなオブジェクトが表示されます。 Sheet1部分はコードネームと呼ばれ、シートの名前を変更すると変更されません。タブ名を使用する場合は、

ThisWorkbook.Worksheets("MyTabName").Range("A1:A3") 

などのようなものを使用してください。

関連する問題