Ich habe erst seit ca. 4 Monaten mit Makros in Excel gearbeitet und habe mich im Wesentlichen selbst gelehrt, indem ich vorhandenen Code gefunden und herausgefunden habe wie es funktioniert. Ich bin jetzt ein bisschen fest.Excel-Makro: Kopieren von Zeilenwerten aus einem Arbeitsblatt an eine bestimmte Stelle in einem anderen Arbeitsblatt, basierend auf Kriterien
Ich habe einen Bericht in einer Excel-Arbeitsmappe. Ich muss die Daten über mehrere Arbeitsblätter (innerhalb derselben Arbeitsmappe) kopieren, basierend auf den Daten, die in Spalte D erscheinen. Das heißt, ich muss die gesamte Zeile kopieren, in der Spalte D bestimmte Kriterien erfüllt. Das ursprüngliche Arbeitsblatt enthält Formeln, aber ich möchte nur die Werte angezeigt werden, wenn die Daten kopiert werden.
ich war in der Lage, die Daten über, zu kopieren, aber ich habe zwei Probleme: 1) die Formeln kopieren über, nicht nur die Werte 2) die Daten an der Zelle A2 in das neuen Arbeitsblatt erscheinen, aber ich brauche Es beginnt bei Zelle A5
Ich bin dies als eine Vorlage einrichten, wie der Hauptbericht jeden Monat ausgeführt werden und aufgeteilt werden muss, so dass der Bereich, aus dem ich kopiere nicht konstant sein wird. Dies ist ein Beispiel für den Code ich bin derzeit mit:
Sub RefreshSheets()
Sheets("ORIGIN").Select
Dim lr As Long, lr2 As Long, r As Long
lr = Sheets("ORIGIN").Cells(Rows.Count, "A").End(xlUp).Row
lr2 = Sheets("DESTINATION").Cells(Rows.Count, "A").End(xlUp).Row
For r = lr To 2 Step -1
If Range("D" & r).Value = "movedata" Then
Rows(r).Copy Destination:=Sheets("DESTINATION").Range("A" & lr2 + 1)
lr2 = Sheets("DESTINATION").Cells(Rows.Count, "A").End(xlUp).Row
End If
Next r
End Sub
ich versucht habe, den Zusatz ".PasteSpecial Paste: = xlPasteValues" nach ".Range ("A" & lr2 + 1)", aber ich habe eine Kompilierfehler (erwartet: Ende der Anweisung). Ich bin sicher, ich habe etwas offensichtlich übersehen (das ist, was ich für die Verwendung von Code, den ich noch nicht vollständig verstehe), aber nichts, was ich bisher versucht habe funktioniert hat.
Jeder Rat würde sehr geschätzt werden.
Fantastisch! Vielen Dank, das funktioniert genau so, wie ich es brauche und macht mehr Sinn als mein ursprünglicher Code. Ich schätze die Hilfe sehr. – Gevauden
Ich bin froh, dass es geholfen hat. Als Anmerkung kopiert der ursprüngliche Code die Werte, die bei A2 beginnen, weil das die erste leere Zeile war, die von 'Sheets (" DESTINATION ") gefunden wurde. Zellen (Rows.Count," A "). Ende (xlUp) .Row' so was Dieser Code prüft die letzte Zeile auf dem Zielblatt und wenn sie kleiner als 5 ist, erhöht sie es auf 5: 'Wenn lrD <5 Dann lrD = 5' –
Ahh, gotcha. Danke dafür, ich kann sehen, wo ich jetzt falsch gelaufen bin. Du hast mir gerade eine Menge Zeit erspart. – Gevauden