Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
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

Spalte mit Schleife von oben nach unten durchsuche

Spalte mit Schleife von oben nach unten durchsuche
12.03.2019 17:36:49
oben
Hallo zusammen,
ich suche schon Tage nach einer Lösung für mein Problem und komme mit googeln und Foren lesen nicht weiter. Daher ist dies meine letzte Idee & Ich hoffe ihr könnt mir weiterhelfen!!
Ich habe ab Spalte B10 versch. Arbeitspaketen, deren Name zum Filtern öfters untereinander erscheinen. In Spalte C stehen die Arbeitsschritte dazu, die mehrmals vorkommen können aber in unterschiedlichen Arbeitspaketen:
Spalte B: Spalte C:
Kabel Blockschaltbild
Kabel Schaltplan
Kabel Zeichnung
FBG Blockschaltbild
FBG Schaltplan
FBG Test
Mechanik Layout
In C3 und D3 muss das Arbeitspaket und sein Arbeitsschritt ausgewählt werden, dessen Zeile dupliziert werden soll. Beispielsweise die Zeile von "FBG Blockschaltbild" soll kopiert und darunter nochmal eingefügt werden.
Mein Problem ist, dass ich nach FBG suchen kann, dann wird die erste FBG-Zeile markiert. Davon eine Spalte nach rechts geht auch noch aber dann komme ich nicht drauf wie ich nach den Wert von "D3" = "Blockschaltbild" finde weil es dann zum Blockschaltbild vom Kabel springt...
Ich hätte gerne dass es zum ausgewählten Arbeitspaket springt, dann eine Zelle nach rechts springt und von da an nur noch nach unten den ausgewählten Arbeitsschritt sucht. (mein Problem)

Sub Suchen()
Dim AP As String
AP = Range("C3").Value
Dim Schritt As String
Schritt = Range("D3").Value
Dim lastR As Integer
lastR = Range("C10").End(xlDown).Row
Dim rg As Range
Set rg = Columns(2).Find(what:=AP, MatchCase:=False).Offset(0, 1).
'Arbeitspaket in Spalte B gefunden & 1 Zelle nach rechts
Dim x As String
x = rg.Address               'die Adresse bzw. diese eine Zelle in Spalte C merken
For i = x To lastR
'beginnend ab dieser Zelle bis nach unten den Arbeitsschritt suchen (Spalte C)
If Cells(i, 3) = Schritt Then
ActiveCell.Select
Selection.EntireRow.Insert
End If
Next
End Sub

Hoffe auf eure Hilfe und danke im Voraus!!

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

Betreff
Datum
Anwender
Anzeige
AW: Spalte mit Schleife von oben nach unten durchsuche
12.03.2019 19:11:46
oben
Hi
Ersetze mal...
Dim x As String
x = rg.Address
durch
Dim x As Long, i As Long
x = rg.Row
cu
Chris
AW: Spalte mit Schleife von oben nach unten durchsuche
12.03.2019 20:16:44
oben
Hallo Chris,
vielen Dank für deine Antwort, aber es hat leider nichts verändert.
Wenn ich auf das Makro klicke passiert gar nichts... es kommt auch keine Fehlermeldung und auch sonst passiert nichts, es wählt die gesuchte Zelle einfach nicht aus..
Gruß,
Melanie
AW: Spalte mit Schleife von oben nach unten durchsuche
12.03.2019 20:23:51
oben
Vielleicht kann man es auch anders angehen, ich weiß nur nicht wie umsetzen:
In der 1. Schleife soll das Arbeitspaket in Spalte B gesucht werden. Würde auch gehen mit:
For i=1 to 500
If Cells (I,2) = AP then
ActiveCell.Offset(0,1).Select
.. und dieser Wert muss dann der Startpunkt für die 2. Schleife sein um in Spalte C nach unten den Arbeitsschritt zu suchen...
Ich hoffe sehr dass mir damit noch jemand weiterhelfen kann!
Anzeige
AW: Spalte mit Schleife von oben nach unten durchsuche
13.03.2019 09:05:48
oben
Hallo,
teste mal:
Public Sub Doppeln()
Dim strPaket As String, strSchritt As String
Dim raFund As Range, raBereich As Range
Dim loLetzte As Long, i As Long, z As Long
Dim boVorhanden As Boolean
Application.CutCopyMode = False
'Blattname anpassen
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
strPaket = .Cells(3, 3)
strSchritt = .Cells(3, 4)
Set raBereich = .Range(.Cells(10, 2), .Cells(loLetzte, 2))
Set raFund = raBereich.Find(what:=strPaket, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
i = raFund.Row
Set raFund = Nothing
Else
MsgBox "Arbeitspaket nicht gefunden."
Exit Sub
End If
For z = i To loLetzte
If .Cells(z, 3) = strSchritt Then
.Cells(z, 2).Resize(, 2).Copy
.Cells(z + 1, 2).Resize(, 2).Insert
Application.CutCopyMode = False
boVorhanden = True
Exit For
End If
Next z
End With
If Not boVorhanden Then
MsgBox "Arbeitsschritt nicht vorhanden."
End If
End Sub
Gruß Werner
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige