Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Finden und Kopieren

Finden und Kopieren
23.12.2021 18:18:20
Chris
Hallo Forum,
untenstehendes Makro sucht im Sheet "Test", Spalte 2, eine Liste nach den Werten 5 oder 6 ab.
Alle gefunden Werte werden als Block kopiert und auf die Sheets mit dem Namen 5 und 6 kopiert.
Das Makro funktioniert soweit gut.
Jedoch wird im Sheet "Test" die erste Reihe nicht mitkopiert, obwohl in Spalte 2 bereits das Suchkriterium "5" enthalten ist.
Was muss man ändern, damit auch die erste Reihe im Sheet "Test" im Suchbereich mitberücksichtigt wird?
Gruß
Chris

Sub SF()
Dim Zelle1 As Range
Dim Zelle2 As Range
Dim x
With Sheets("Test")
.UsedRange.Sort key1:=.Cells(1, 2), order1:=xlAscending, Header:=xlNo
For Each x In Array("5", "6")
Set Zelle1 = .Columns(2).Find(what:=x, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext)
Set Zelle2 = .Columns(2).Find(what:=x, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
Range(Zelle1, Zelle2).Offset(0, -1).Resize(, 4).Copy Worksheets(x).Cells(1, 1)
Next
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Finden und Kopieren
23.12.2021 18:53:47
Luschi
Hallo Chris,
aus der Vba-Online-Hilfe zu Range.Find:
Parameter After: Wenn Sie dieses Argument nicht angeben, beginnt die Suche nach der Zelle in der oberen linken Ecke des Bereichs
Bei Dir ist der Suchbereich Colums (2) und damit beginnt die Suche nicht in Zelle 'B1', sondern in Zelle 'B2'.
Gruß von Luschi
aus klein-Paris
AW: Finden und Kopieren
24.12.2021 13:12:00
Chris
Hallo Luschi,
danke für deinen Hinweis.
Hier verstehe ich die Macher von Excel nicht ganz: Wenn die Suche ohne Angabe von "after" in der oberen (=oberste!) linken Ecke beginnt, dann sollte auch Reihe 1 mitberücksichtigt werden. Excel zeigt mir jedoch, dass dem nicht so ist. Weshalb kann ich nur mutmaßen. Möglicherweise geht man davon aus, dass in Rehe 1 Überschriften stehen, die nicht Teil der Suchen sein sollen (ähnlich dem Serienbrief, Suchfeldüberschriften müssen hier zwingend in Reihe 1 stehen).
Liest man weiter steht dort ferner, dass bei Angabe von after die Suche am Ende der Tabelle erneut von oben beginnt, diesmal auch Reihe 1 berücksichtigt wird.
Folgende Änderung funktioniert daher nun wie gewünscht:

Set Zelle1 = .Columns(2).Find(what:=x, after:=Range("B1"), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext)
Set Zelle2 = .Columns(2).Find(what:=x, after:=Range("B2"), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
Danke und Gruß
Chris
Anzeige
AW: Finden und Kopieren
23.12.2021 19:05:54
GerdL
Moin, wenn du mit Reihe die Überschriften in Zeile 1 meinst, teste mal

Sub SF()
Dim Zelle1 As Range
Dim Zelle2 As Range
Dim x
With Sheets("Test")
.UsedRange.Sort key1:=.Cells(2, 2), order1:=xlAscending, Header:=xlYes
For Each x In Array("5", "6")
Set Zelle1 = .Columns(2).Find(what:=x, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext)
Set Zelle2 = .Columns(2).Find(what:=x, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
.Range(.Cells(1, 1), .Cells(1, 4)).Copy Worksheets(x).Cells(1, 1)
.Range(Zelle1, Zelle2).Offset(0, -1).Resize(, 4).Copy Worksheets(x).Cells(1, 1)
Next
End With
End Sub
End Sub
Gruß Gerd
Anzeige
AW: Finden und Kopieren
24.12.2021 12:59:36
Chris
Hallo Gerd,
danke für deinen Vorschlag. Leider nein, da in diesem Fall - wie es dort steht - die erste Zeile in der Quelltabelle auf alle Sheets kopiert wird.
Die Vorschlag von Lusche funktioniert dagegen.
Gruß
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige