2016-05-16 8 views
0

Ich möchte ein Makro erstellen, um Formeln auszufüllen. Daten werden von einer Website kopiert und separat auf Sheet1 eingefügt. Sheet2 enthält Formeln zum Bereinigen und Anordnen der Daten, einschließlich der Eliminierung von Zeilen anhand eines Kriteriums. Das Problem ist, dass wenn ich die Formeln vor dem Eliminieren der Zeilen ausfülle, bekomme ich einen #REF Fehler. Ich möchte die Füllung in das Makro aufnehmen, da ich bereits eine habe, um die Zeilen zu löschen. Ich möchte das Zeichen 160 nicht durch einen tatsächlichen ersetzen. Mein Makro ist darunter platziert.Formel ausfüllen basierend auf Daten in einem anderen Blatt

Code:

Sub chng() 

    Dim x As Long, lastrow As Long 
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row 
    For x = lastrow To 1 Step -1 
     If Cells(x, 2).Value = "SA" Or Cells(x, 2).Value = "EVC" Then 
      Rows(x).Delete 
     End If 
    Next x 


    Application.ScreenUpdating = False 


    Columns("A:A").Select 


    Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, SearchOrder _ 
     :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

    Application.ScreenUpdating = True 


    Range("A1").Select 

End Sub 

Mit anderen Worten, was ich bewerkstelligen wollen, sobald ich die Info Einfügen beendet haben, das Makro ausführen, löschen Sie die Zeilen, ändern Zeichen 160 für einen tatsächlichen Raum dann die Zeilen zählen (ohne Header) auf Sheet1 und füllen Sie auf sheet2 basierend darauf z wenn ich 140 Zeilen von Daten habe ich aus Reihe 2 bis 141.

Antwort

0
füllen unten wollen

Sie können die Anzahl der Zeilen erfassen und vermindern, für jede Zeile, die Sie löschen, verwenden Sie dann diesen Bereich:

Dim x As Long, lastrow As Long, totalRows As Long 
totalRows = lastrow 

    Rows(x).Delete 
    totalRows = totalRows - 1 

Dann können Sie Ihre Formeln von Zeile 2 in totalRows kopieren, in welcher Spalte auch immer.

+0

Sektion bearbeiten: Dim x As Long, LastRow As Long, totalRows As Long LastRow = Cells (Rows.Count, 1) .End (xlUp) .Row totalRows = LastRow Für x = LastRow Zu 1 Schritt -1 Wenn Zellen (x, 2) .Value = "SA" oder Zellen (x, 2) .Value = "EVC" Dann Zeilen (x) .Delete totalRows = totalRows - 1 End If Next x Die Formatierung kann in diesem Kommentar ein wenig seltsam sein. Haben Sie bereits Code zum Kopieren der Formeln? –

Verwandte Themen