2017-08-31 4 views
0

今日VBAでExcelの問題を解決する必要がありましたが、私はnoobのように感じます。私の要件は本当にシンプルですが、どういうわけか私はラインに入っています。VBA:回路図のコピールーチン

既存の各行に追加シートにいくつかのバリアントを追加したいと思います。

Check out the scheme here

どうということは可能ですか?誰も私を助けることができるpls?

フィードバックとあなたの助けをありがとう。

挨拶 eXocode

ソリューションました:

`サブのCopyData()

RowInSheet3 = 1 

For RowInSheet1 = 1 To Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row 
    Sheets(3).Cells(RowInSheet3, 1) = Sheets(1).Cells(RowInSheet1, 1) 
    RowInSheet3 = RowInSheet3 + 1 


    For RowInSheet2 = 1 To Sheets(2).Range("A1").SpecialCells(xlCellTypeLastCell).Row 
     Sheets(3).Cells(RowInSheet3, 1) = Sheets(2).Cells(RowInSheet2, 1) 
     Sheets(3).Cells(RowInSheet3, 2) = Sheets(2).Cells(RowInSheet2, 2) 
     RowInSheet3 = RowInSheet3 + 1 
    Next 

Next 

エンドSub`

+0

コピーVarシートデータを配列にコピーします。 .....エントリーシートのセルをループします。ループの繰り返しごとに、エントリーシートから1つのセルをコピーしてから配列をコピーします。 – jsotola

答えて

1

ここでそれを行うための簡単な方法があります。あなたは必要に応じて範囲を調整する必要がありますが、基本的なアルゴリズムはあなたが探しているものでなければなりません:

Sub CopyData() 

    RowInSheet3 = 1 

    For RowInSheet1 = 1 To Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row 
     Sheets(3).Cells(RowInSheet3, 1) = Sheets(1).Cells(RowInSheet1, 1) 
     RowInSheet3 = RowInSheet3 + 1 


     For RowInSheet2 = 1 To Sheets(2).Range("A1").SpecialCells(xlCellTypeLastCell).Row 
      Sheets(3).Cells(RowInSheet3, 1) = Sheets(2).Cells(RowInSheet2, 1) 
      Sheets(3).Cells(RowInSheet3, 2) = Sheets(2).Cells(RowInSheet2, 2) 
      RowInSheet3 = RowInSheet3 + 1 
     Next 

    Next 

End Sub 
+0

これは素晴らしいですね。 Thx JensS 「エントリーシート」に何個のエントリがあるか分からない場合、おそらく.Range( "A1:A10")リミッタを使用できません... どうすればこの問題を回避できますか...?単に(「A:A」)と一緒に? – eXocode

+0

私はsheet1とsheet2の最後のセルを自動的に見つけるサポートを追加しました。 – JensS

+0

ヘイ・ジェンズ今、あなたのスクリプトを試してみる時間がありました。私は結果シートのシート2のすべての変数を使ってシート1からの最初のエントリーを得ました。パーフェクト、これはまさに私が期待したものです。しかし、スクリプトはEntry2、Entry3などで自動的に続行されません。どうすればシート1のすべての変数エントリに対してこの機能を繰り返すループにロジックを配置できますか? – eXocode

関連する問題