Copy/Paste mehrere Zeilen in VBA
Ich bin versucht zu tun, ein einfaches kopieren Zeile einfügen Zeile innerhalb einer Arbeitsmappe. Ich habe gesucht-threads und versucht, meine code mehrere Male ohne Erfolg.
Die eine, die dem am nächsten kommt, zu arbeiten, wird dieses kopiert jedoch nur eine einzige Instanz des matching-Kriterien.
Ich versuche, eine Schleife erstellen, kopieren Sie alle Zeilen, hat eine Entsprechung in einer der Spalten.
So, wenn 8 Spalten, wobei jede Zeile mit dem entsprechenden Wert in Spalte 7 kopieren sollten zu einem benannten Blatt.
HTML:
Sub test()
Set MR = Sheets("Main").Range("H1:H1000")
Dim WOLastRow As Long, Iter As Long
For Each cell In MR
If cell.Value = "X" Then
cell.EntireRow.Copy
Sheets("X").Range("A" & Rows.Count).End(xlUp).PasteSpecial
End If
If cell.Value = "Y" Then
cell.EntireRow.Copy
Sheets("Y").Range("A" & Rows.Count).End(xlUp).PasteSpecial
End If
If cell.Value = "Z" Then
cell.EntireRow.Copy
Sheets("Z").Range("A" & Rows.Count).End(xlUp).PasteSpecial
End If
If cell.Value = "AB" Then
cell.EntireRow.Copy
Sheets("AB").Range("A" & Rows.Count).End(xlUp).PasteSpecial
End If
Application.CutCopyMode = False
Next
End Sub
Ich mag das, weil ich brauche, um den Gegner mehrere Ziel-sheets mit verschiedenen Kriterien, aber ich brauche alle Zeilen, die mit den Kriterien übereinstimmen, zu übernehmen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITETEN CODE IN REAKTION AUF EINE NEUE ANFRAGE:
Den code unten kopieren Sie alle Zeilen in Blatt
Main
und fügen Sie diese in die entsprechenden Arbeitsblätter basierend auf dem Wert in Spalte 7.Bitte beachten Sie: Wenn es einen Wert in Spalte 7, der NICHT mit einem bestehenden Blatt name, der code wirft einen Fehler. Ändern Sie den code zur Behandlung der Ausnahme.
Lassen Sie mich wissen, ohne zusätzliche Hilfe benötigt.
Main
. Mit dieser sagte, wenn Sie ALLE Arbeitsblätter in der Arbeitsmappe abgesehen vonMain
dass Sie NICHT wollen, gelöscht, dann müssen Sie ändern Sie den code vor dem ausführen. Ansonsten, es ist gut zu gehen! Auf einer seitlichen Anmerkung, wenn der code funktioniert wie benötigt, bitte markiere die Frage als beantwortet, so dass zukünftige Leser können die Frage, wie eine Referenz.Main
Blatt. Ist es mit dem Namen, genau, Haupt - (groß-Kleinschreibung)?Main
. Ist es das, was Sie brauchen?Main
und nur Daten in den Spalten A:H. zusätzlich ändere ich die Copy/Paste-code. Zunächst, es kopiert die entirerow, und klebte es. Dies diente zum überschreiben der Daten in der Paste sheets, einschließlich der Spalten I:Z (da Sie Teil der gesamten Reihe). Der neue code nicht mehr überschreibt diese Formel Zellen.Main
, richtig? Haben Sie bestätigen, dass Sie den Namen des Tabellenblattes ist genauMain
(groß-und Kleinschreibung, keine führenden/nachgestellten Leerzeichen)?Ihre aktuelle code einfügen in der gleichen Zeile in jedem Blatt über und über, um die Letzte Zeile mit Wert in Spalte A.
Range("A" & Rows.Count).End(xlUp)
sagt, etwa "gehen Sie auf die ganz unten auf dem Arbeitsblatt in Spalte A, und springen Sie dann von dort auf die nächste untersten Zelle in Spalte A mit Inhalt", was bringt Sie zurück zu der gleichen Zelle jedes mal.Stattdessen könnte man mit Hilfe von Linien des Musters:
Wo
UsedRange
ist ein Angebot, das alle Zellen auf dem Blatt mit den Daten in Ihnen. Die+ 1
bringt Sie auf die folgende Zeile.Könnten Sie diese ein wenig hübscher aus, als mit
Mit
: