2016-12-28 8 views
-2

Hellooにコピー私は1つのワークシート&ペースト、他のワークシート内の各データの18回からのデータの範囲をコピーする必要がある1つのワークシートからデータの範囲と、他のワークシート

を18倍に貼り付けます。

例: 「入力」という名前の1枚のシートから6列A、F、Gからデータをコピーする必要があります。列A、C、および行の行6から18回データを貼り付ける必要があります。他のシートの "locale_Data"

したがって、入力シートの最初のデータは、シート "locale_Data"のRow(6:23)に貼り付けられます。&は、順番に他のデータに従います。

ありがとうございました!

+1

あなたのコードとその問題点をお手伝いします – user3598756

答えて

0

このようなことを試すことができます。 1つの列についてのみ示されています。他の列についても繰り返すことができます。範囲$A$1:$A$2を必要なデータ範囲に変更してください。

Spreadsheet screenshot

D1 = INDEX($A$1:$A$2,QUOTIENT(ROW()-ROW($D$1),18)+1) 
1

あなたが範囲の値を持っている場合はA6を言う:あなたはこのような何かを行うことができます入力ワークシートのA10と、あなたは、行6で始まるlocale_Dataワークシートでそれらをコピーするために18回をしたいと思います。あなたは繰り返す必要があり

ThisWorkbook.Worksheets("Inputs").Range("A6").Copy 
ThisWorkbook.Worksheets("locale_Data").Range("A6:A23").PasteSpecial 

:あなたはわずか6 18回あなたはこのような何かを行うことができ、別のワークシートの行の値をコピーしたい場合は

Dim LastRow As Long 
Dim i, startAt, totalRowsToCopy As Integer 
Dim sheet1 As Worksheet 
Dim sheet2 As Worksheet 

Set sheet1 = ThisWorkbook.Worksheets("Inputs") 
Set sheet2 = ThisWorkbook.Worksheets("locale_Data") 
LastRow = sheet1.Cells(sheet1.Rows.Count, "A").End(xlUp).Row 

sheet1.Range("A6:A" & (LastRow)).Copy 
startAt = 6 
totalRowsToCopy = LastRow - startAt + 1 
For i = 1 To 18 
    sheet2.Range("A" & startAt & ":A" & (startAt + totalRowsToCopy - 1)).PasteSpecial 
    startAt = startAt + totalRowsToCopy 
Next i 

Mat's提案後に編集します)各セルのこのコード。

そして、あなたは他のいくつかの番号に18を変更したい場合は

Range("A6:A" & (6 + 18)).PasteSpecial 

が、これはあなたが探しているものではない場合、私に教えてくださいようにあなたは、常にセル範囲を連結することができます。

+0

私は、この回答を下落させました。なぜなら、人々だけが 'に依存するコードを書くのをやめると尋ねる必要はありません。 Selectと 'Selection'(と' .Activate')を実行し、 'ActiveSheet'に対して暗黙的に働きます。たとえば、ThisWorkbook.Worksheets( "Inputs")。Range( "A6")。単に代わりに 'Copy'を実行するだけです。 –

+0

ありがとうございました。私はあなたに同意し、次回からそれを行います。 – user3391546

+0

あなたの答えを自由に編集することができます。下線は変わらない;-) –

関連する問題