2017-08-12 11 views
-1

私はD列のセル​​をお互いに比較しようとしています。セル(d2、d3)が同じデータを有する場合、それは次のセル(D4)に進み、セルD3とD4を比較する。 falseの場合は、それらの間に行を追加し、新しい行の下位セルにデータを配置する必要があります。Excel VBAは列に対してセルを比較します

IE

ljsdahgfoshfv 
ljsdahgfoshfv 
ljsdahgfoshfv 
lldkjafsf;ksn 
dslkfndjlnvfs 
dslkfndjlnvfs 
dslkfndjlnvfs 

ljsdahgfoshfv 
ljsdahgfoshfv 
ljsdahgfoshfv 
lldkjafsf;ksn 
lldkjafsf;ksn 
dslkfndjlnvfs 
dslkfndjlnvfs 
dslkfndjlnvfs 
dslkfndjlnvfs 
dslkfndjlnvfs 
に変換しまう例テーブル:

答えて

-1

このコードは、あなたが記述何をするようだが、私の理解によると、あなたがしなければなりませんあなたの結果の最後の項目の行が1つ少なくなります。いずれにしても、コードをステップ実行することで、必要な結果を得るために必要に応じて変更することができます。そうでない場合は、質問してください。 .selectステートメントは、コードをステップ実行するときにロジックに従うことができるようにするだけであり、コードがどのように機能するかを理解すれば削除する必要があります。

Option Explicit 
Sub compareD() 
Dim r As Range 
Set r = ActiveSheet.Range("D1") 
While r <> "" 
    If r = r.Offset(1, 0) Then 
    r.Select 
    Set r = r.Offset(1, 0) 
    Else 
    Rows(r.Row + 1).Insert 
    r.Select 
    r.Offset(1, 0) = r.Offset(2, 0) 
    Set r = r.Offset(2, 0) 
    End If 
Wend 
End Sub 
+1

ありがとうございます! – scandune

+0

聞いてうれしい。それはあなたがそれを答えたものとしてマークすると役立ちます。 –

+0

は、データを列bに追加する方法もありますか? – scandune

0
Sub insertRows() 

    ActiveSheet.Range("D1").Select 

    Do Until Not IsEmpty(ActiveCell) 

     Set curCell = ActiveCell 
     Set nextCell = ActiveCell.Offset(1, 0) 

     If nextCell.Value <> curCell.Value Then 

      ActiveCell.Offset(1, 0).EntireRow.Insert 
      ActiveCell.Offset(3, 0).Select 

     Else 

      ActiveCell.Offset(1, 0).Select 

     End If 
    Loop 

End Sub 

これはあなたのお役に立てば幸いです。

+0

[Excel VBAはじめにPart 5 - セル(範囲、セル、アクティブセル、終了、オフセット)の選択](https://www.youtube.com/watch?v=c8reU-H1PKQ&index=5&list= PLNI-AWhQzckr8Dgmgb3akx_gFMnpxTN5&t = 3124s)をYouTubeにアップロードしてください。 –

関連する問題