2017-10-12 6 views
0

私はマスターシート( "Perk")を所有しており、列Aの "y"をすべて "登録"シートにコピーし、すべて "y"列Bの「住宅」シートに入れます。現在のコードでは、正しい情報が登録シートにコピーされています。ハウジングシートは、最初のレコードを引っ張っているだけです。1つのワークシートの行を別の列にコピーする

Sub extractdata() 
    Dim x As Long, lastrow 

    lastrow = Sheets("Perk").Range("A" & Rows.Count).End(xlUp).Row 

    Sheets("Housing").Range("A2:AW500").ClearContents 
    Sheets("Registration").Range("A2:AW500").ClearContents 
    For x = 2 To lastrow 
    If Worksheets("Perk").Cells(x, 1) Like "y*" Or Worksheets("Perk").Cells(x, 1) Like "Y*" Then 
    Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Registration").Range("A" & Rows.Count).End(xlUp).Offset(1) 
    End If 

    If Worksheets("Perk").Cells(x, 2) Like "y*" Or Worksheets("Perk").Cells(x, 2) Like "Y*" Then 
    Worksheets("Perk").Cells(x, "B").EntireRow.Copy Destination:=Sheets("Housing").Range("B" & Rows.Count).End(xlUp).Offset(1, -1) 
    End If 
    Next x 
End Sub 
+0

を動作するはずです列Bにはyがあります。 Aがyを持っているかどうかにかかわらず住宅に行くことを望むなら、それをElseIFではなく2つの異なるifに分割することにします。 –

+0

ありがとう!私は更新を行った。列Aと列Bにyがある場合、行だけが住宅にコピーされます。列Bにyを含む複数の行がある場合、最後の行のみが住宅にコピーされます。登録は正しく行われます。 – Faith

+0

あなたの質問は、問題のコードが何をしているかを正確に反映していますか? (「現在のコードでは、正しい情報が登録用紙にコピーされています。住宅用シートは最初のレコードを引っ張っているだけです」)、あなたの最後のコメント列Aと列Bにyがある場合、または列Bにyを含む複数の行がある場合は、最後の行のみが住宅にコピーされています。」)は、それを矛盾させるようです。 – YowE3K

答えて

1

これは、登録シートの出力収納シートの出力

として

enter image description here

と、このよう

enter image description here

、あなたの特典シートとしてこれを考えてみましょうここで何が起こっている はあなたが間違っている列Aに空のセルをチェックすることにより、収納シートの空の行を見つけようとしているの文

Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Housing").Range("A" & Rows.Count).End(xlUp).Offset(1) 

の結果です。

は試していませんが、あなたはこれでその行を変更した場合、それは今あなたがそれを持っている列A yを持っている場合、それは登録に行くことと、列A yを持っていない場合にのみ

Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Housing").Range("B" & Rows.Count).End(xlUp).Offset(1, -1) 
+0

@ YowE3Kコメントありがとうございます。修正を加えました。 –

+0

@ YowE3Kあなたの提案に応じて変更しました。 –

関連する問題