2016-06-29 7 views
0

行G、H、Iから15行目のデータを取得しようとしています行8から列M、Q、Rの「データ」と呼ばれるシートに貼り付けられる「オーダーシート」。データが再送されず入力されていないときにシートからシートにデータを引き出すマクロループ

私はこのデータが日々変化するため、記録してみましたが、記録されているマクロはそのままで、IF式をマクロに配置して停止しないようにする方法はわかりません原セル内のデータ。ある日、データはオーダーシートの15行目から50行目、そして15行目から71行目(常に15から始まる)になります。何行目であろうと、すべての行をカバーするように200行のマクロを実行すると、シートセルに何も表示されていないときにデータシートにゼロが配置されます。オーダーシートのセルに番号がない場合は空白にしておきたいと思います。

「オーダーシート」欄IはR

例えばに対してQ/ にM/ Hに(ダウンオーダーシートと行8の下向きデータシート上の行15から始まる)「データシート」 Gに貼り付け G15からM8/ H16からQ9/ I17からR10

基本レコーダーマクロをアイデアとして参照してください。ここでは、事前に

おかげ

ActiveWindow.SmallScroll Down:=-15 
Range("M8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-6]" 
Range("M8").Select 
Selection.AutoFill Destination:=Range("M8:M159"), Type:=xlFillDefault 
Range("M8:M159").Select 
ActiveWindow.SmallScroll Down:=-135 
Range("Q8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" 
Range("Q8").Select 
Selection.AutoFill Destination:=Range("Q8:Q159"), Type:=xlFillDefault 
Range("Q8:Q159").Select 
ActiveWindow.SmallScroll Down:=-132 
Range("R8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" 
Range("R8").Select 
Selection.AutoFill Destination:=Range("R8:R159"), Type:=xlFillDefault 
Range("R8:R159").Select 
ActiveWindow.SmallScroll Down:=-123 
Range("I3").Select 
+0

リファレンスで設定しているようにスクロールする必要はありません。また、select(range( "R8")。formulaR1C1 = 'などを使用しないでください。あなたはデータを定義するために 'range(" R1000000 ")end(xlUp).Row'を見る必要があります。 –

+0

値をコピーしたいのですか(1回)、元のセル更新されますか? – arcadeprecinct

+0

こんにちは@arcadeprecinct私は彼らが新しいシートでそのデータを使用できるように一度コピーするようにしたいと思います。翌日、新しいデータを取得したら、マクロを再度実行してデータシートを更新します。 – Bradley

答えて

1

が下方M8に下向きG15からすべての値をコピーする方法

Dim sourceSht As Worksheet 'sheet you want to copy from 
Dim targetSht As Worksheet 'sheet you want to copy too 
Dim sourceRng As Range 'what you want to copy 
Dim targetRng As Range 'where you want to copy to 
Dim lastRow As Long 'the last row that holds data 

Set sourceSht = Sheets("Order Sheet") 
Set targetSht = Sheets("Data") 

With sourceSht 
    lastRow = .Cells(.Rows.Count,7).End(xlUp).Row '7 is the column number 
End With 

Set sourceRng = sourceSht.Range("G15:G" & lastRow) 
Set targetRng = targetSht.Range("M8").Resize(sourceRng.Rows.Count, 1) ' Range("M8:M"& lastRow - 7) would also be possible 
targetRng.Value = sourceRng.Value 

であるあなたは、(列インデックスと行番号を保持する変数を導入することができます15と8のように)。範囲に複数の列が含まれていて、一度に多くのデータをコピーすることもできます。

+0

こんにちは@arcadeprecinct上記をありがとうございます、そして、それが何を参照しているかについての情報については、これは私の理解と知識を大いに助けます。マクロを実行しようとしましたが、以下の行でエラーが発生しました。 lastRow = .Cells(.Rows.Count、7).End(xlUp) '7は列番号です - 黄色で強調表示されます。 – Bradley

+1

@Bradley 'lastRow'を計算するときに' .Row'を忘れました。今すぐ動作するはずです。 '.Row'がなければ、それはセルそのものであり、行インデックスではありません – arcadeprecinct

+0

@arcadeprecinctありがとうございます。同じ方法で列QとRにデータを挿入するために、最後の2行をコピーして編集して、うまく動作します。助けをありがとう! – Bradley

関連する問題