2016-11-29 9 views
0

おはようございます、 ファイル内のデータを変更する際に問題があります。 私のスクリプトがH列のデータを参照として取得し、データが次の行のデータと等しい場合にのみ動作し、2行目の列IとJの値をコピーして貼り付けます一番上の行の列Jの後の最初の空きセルに挿入します。vba - excel - 値が次の行の値なら別の値をコピー

With ws1 
For row = 2 To 1000 

    If .Cells(8, row).Value Like .Cells(8, row + 1).Value Then 

     .Cells(9 - 2, row).Value = .Cells(9, row + 1).Value 

End If 
Next 
End With 
:今すぐファイルはそう

I would like it to become so

私は書くことができた唯一のコードはこれですので Now the file is organized so

私はそれがなりたい編成されている

しかし明らかにそれは間違っていて、私はそれが最小限ではない...

私は本当に立ち往生しています....助けてください。

+0

2012年、2013年、2014年にG列のデータが2015しかない場合はどこにありますか?これらのスクリーンショットでは表示されない重要なデータはありますか? – phil652

答えて

2

以下のコードはテストされており、サンプルデータで動作します。

With ws1 

    Dim lRow As Long 
    lRow = .Range("H" & .Rows.Count).End(xlUp).Row 

    Dim i As Long 
    For i = lRow To 2 Step -1 

     If .Range("H" & i) = .Range("H" & i - 1) Then 

      .Range(.Range("I" & i), .Range("I" & i).End(xlToRight)).Copy _ 
       Destination:=.Range("H" & i - 1).End(xlToRight).Offset(, 1) 

      .Range(.Range("I" & i), .Range("I" & i).End(xlToRight)).ClearContents 

      'uncomment below line if you want to remove rows where data is copied up 
      '.Range("H" & i).EntireRow.Delete 

     End If 

    Next 

End With 
+0

非常に良い。私は削除パターンの使用については考えなかったが、それは良いようだ。私は '.Range(" H "&i).EntireRow.Delete'を' .Rows(i).delete'に変更しますが、それは私のペットのことです。 –

+0

うわー、完璧!スコットありがとうございます! :) – Rufi0

関連する問題