2016-12-05 3 views
0

Ich habe dieses Skript hier gefunden und es an meine Bedürfnisse angepasst. Aber ich kann nicht herausfinden, wie eine Zelle statt der gesamten Zeile einzufügenZelle über dem Zellenwert einfügen

Sub BlankLine() 
    Dim Col As Variant 
    Dim Col2 As Variant 
    Dim BlankRows As Long 
    Dim LastRow As Long 
    Dim R As Long 
    Dim StartRow As Long 

    Col = "A" 
    Col2 = "B" 
    StartRow = 2 
    BlankRows = 1 

    LastRow = Cells(Rows.Count, Col).End(xlUp).Row 

    Application.ScreenUpdating = False 

    With ActiveSheet 
    For R = LastRow To StartRow + 1 Step -1 
     If .Cells(R, Col) <> .Cells(R, Col2) Then 
     .Cells(R, Col2).EntireRow.Insert Shift:=xlUp 
     End If 
    Next R 
    End With Application.ScreenUpdating = True 
End Sub 

Also, wenn Spalte A Spalte B zu einem bestimmten Zeile nicht ein Raum dann mit dem vergleichen, ging Übereinstimmen einzufügen hält über das Hinzufügen einer Zeile irgendein falscher Wert.

Example: 1 1 
     2 3 
     3 4 

Becomes: 1 1 
     2 
     3 3 
      4 

Jede Hilfe würde sehr geschätzt werden!

+0

Ändern des Falls .Cells (R, Col) <> .Cells (R, Col2) Dann .Cells (R, Col2) .EntireRow.Insert Shift: = xlUp zu Wenn .Cells (R, Col) <> .Cells (R, Col2) Dann .Zellen (R, Col2) .Insert Shift: = xlDown Muss mit der Bestellung spielen. Ich kann mich darum kümmern, dass ich zur Arbeit komme, wenn niemand es tut. –

+0

Für R = StartRow scheint LastRow besser zu funktionieren, obwohl es abhängig von Ihrem Dataset immer noch Probleme geben kann. –

+0

Col und Col2 sind nicht wirklich Varianten ... Sie verwenden sie als Strings. – Rdster

Antwort

1
.Cells(R, Col2).Insert Shift:=xlDown 
+0

Ich habe das versucht ... "Laufzeitfehler '1004': Einfügen Methode der Range-Klasse fehlgeschlagen " – TylerYoc

+2

Das hat für mich funktioniert ... – Rdster

+1

@TylerYoc - Was war der Wert von R und Col2, wenn es den Fehler gab? (Ich nehme an, der Fehler ** war ** in der geänderten Zeile.) – YowE3K

0

Sie müssen von der Schleife ändern:

For R = LastRow To StartRow + 1 Step -1 
    If .Cells(R, Col) <> .Cells(R, Col2) Then 
     .Cells(R, Col2).EntireRow.Insert Shift:=xlUp 
    End If 
Next R 

zu

For R = StartRow To LastRow 
    If .Cells(R, Col).Value <> .Cells(R, Col2).Value Then 
     .Cells(R, Col2).Insert Shift:=xlDown 
    End If 
Next R 

Ein Wort der Warnung - wenn Sie Daten wie folgt aussieht:

Example: 1 3 
     2 1 
     3 2 

Es wird am Ende so aussehen:

Becomes: 1 
     2 
     3 3 
      1 
      2 

Stellen Sie daher sicher, dass sich Ihre Daten in einer vernünftigen Reihenfolge befinden, bevor Sie diese verwenden.

+0

Ja, ich sehe das Problem dort definitiv. Und das hat wie erwartet funktioniert. Vielen Dank. – TylerYoc

Verwandte Themen