Einfaches Makro (kopiert, sucht und wieder kopiert)
Schreibe gerade mein erstes Makro mit der Makroaufzeichnung. Kann man das Makro nicht so anpassen, dass es in die nächste Zeile wechselt?
Hallo zusammen,
Ich habe eine Tabelle in der die Artikelnummer drin steht (A3 bis A787 ) und noch eine Spalte mit Artikelnummern K3 : K1005
Mein Makro soll A3 kopieren , dann in Spalte K3 : K1005 genau diesen Wert suchen, und bei dem gefunden Wert in der Spalte K (z.B. K5) die Werte von den nächsten 2 Zellen rechts kopieren (z.B. L5 und M5) und diese wiederum in N3 (gleiche Zeile wie A3 ) speichern.
soweit bin ich gekommen.
Das funktioniert nicht weil da ja nur ein Wert abgearbeitet wird und auch keine Schleife dran hängt, die erst A1 abarbeitet und erledigt und dann A2 usw..
Weiß mir vielleicht jemand einen Rat?
Wäre so froh darüber, sitze da und weiß echt nicht mehr weiter.
Gruß
lordofremixes
Hallo zusammen,
Ich habe eine Tabelle in der die Artikelnummer drin steht (A3 bis A787 ) und noch eine Spalte mit Artikelnummern K3 : K1005
Mein Makro soll A3 kopieren , dann in Spalte K3 : K1005 genau diesen Wert suchen, und bei dem gefunden Wert in der Spalte K (z.B. K5) die Werte von den nächsten 2 Zellen rechts kopieren (z.B. L5 und M5) und diese wiederum in N3 (gleiche Zeile wie A3 ) speichern.
soweit bin ich gekommen.
Range("A3").Select
Selection.Copy
Columns("K:K").Select
Selection.Find(What:="257879", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Range("L5:M5").Select
Selection.Copy
Range("N3").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Das funktioniert nicht weil da ja nur ein Wert abgearbeitet wird und auch keine Schleife dran hängt, die erst A1 abarbeitet und erledigt und dann A2 usw..
Weiß mir vielleicht jemand einen Rat?
Wäre so froh darüber, sitze da und weiß echt nicht mehr weiter.
Gruß
lordofremixes
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183177
Url: https://administrator.de/forum/einfaches-makro-kopiert-sucht-und-wieder-kopiert-183177.html
Ausgedruckt am: 12.04.2025 um 04:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo lordofremixes,
für die gewünschte Aufgabe benötigst du kein Makro.
Schau dir mal die Hilfe zum Befehl "SVERWEIS" an,
da findest du alles was du brauchst.
(Im Makro kann man Zellen mit Range().Select ansprechen wie in deinem Auszug,
aber ebenso mit Zellinhalt=Cells(1,1) , heißt schreibe in die Variable Zellinhalt
den Wert der Zelle A1)
Gruß Xolger
für die gewünschte Aufgabe benötigst du kein Makro.
Schau dir mal die Hilfe zum Befehl "SVERWEIS" an,
da findest du alles was du brauchst.
(Im Makro kann man Zellen mit Range().Select ansprechen wie in deinem Auszug,
aber ebenso mit Zellinhalt=Cells(1,1) , heißt schreibe in die Variable Zellinhalt
den Wert der Zelle A1)
Gruß Xolger
Hallo lordofremixes!
Wenn's denn sein soll (auch ich würde für
Anmerkung: Es werden so nur jeweils der Inhalt der Zellen, nicht aber deren Formatierung übertragen ...
Grüße
bastla
P.S.: Eine ordentliche Deines geposteten Codes kriegst Du auch nachträglich noch hin ...
Wenn's denn sein soll (auch ich würde für
SVERWEIS()
plädieren):Sub Kopieren()
AbZeile = 3 'Daten werden ab dieser Zeile gelesen
Spalte = "A" 'Spalte, nach deren Inhalten gesucht wird
SuchSpalte = "K" 'Spalte, in der die Werte aus Spalte (A) gesucht werden
QuellSpalte = "L" 'erste Spalte, aus der Daten übernommen werden sollen
QuellSpaltenAnzahl = 2 'Anzahl der Spalten, aus denen Daten übernommen werden sollen
ZielSpalte = "N" 'Spalte, ab der Daten eingetragen werden sollen
Zeile = AbZeile 'in AbZeile beginnen
Do While Cells(Zeile, Spalte).Value <> "" 'alle Zeilen, die in Spalte (A) einen Wert enthalten, verarbeiten
'Wert aus der aktuellen Zeile und Spalte auslesen und in der SuchSpalte suchen
Set c = Columns(SuchSpalte).Find(What:=Cells(Zeile, Spalte).Value, LookAt:=xlWhole, MatchCase:=False)
If Not c Is Nothing Then 'Wenn nicht kein Suchergebnis ;-)
QuellZeile = c.Row 'Zeile, in der der Wert gefunden wurde
'Zielbereich (per Resize() in der richtigen Größe: 1 Zeile hoch, QuellSpaltenAnzahl Spalten breit) mit Daten aus Quellbereich (ebenfalls per Resize() in der vorgegebenen Größe) befüllen
Cells(Zeile, ZielSpalte).Resize(1, QuellSpaltenAnzahl).Value = Cells(QuellZeile, QuellSpalte).Resize(1, QuellSpaltenAnzahl).Value
End If
Zeile = Zeile + 1 'nächste Zeile
Loop
End Sub
Grüße
bastla
P.S.: Eine ordentliche Deines geposteten Codes kriegst Du auch nachträglich noch hin ...
Hallo lordofremixes!
Grüße
bastla
Meinst du , du kannst bei Gelegenheit noch die einzelnen Zeilen kommentieren?
Besser so?Also war mein Ansatz schon ganz falsch?
Das nicht (der Makrorekorder ist als Starthilfe oft sehr nützlich, arbeitet aber mit sehr vielen unnötigen "Select
/ Selection
"), aber es fehlte jedenfalls die Schleife drumherum ...Grüße
bastla