Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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!!
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalte mit Schleife von oben nach unten durchsuchen


Schritt-für-Schritt-Anleitung

Um eine Spalte in Excel mit einer Schleife von oben nach unten zu durchsuchen und bestimmte Werte zu finden, kannst du das folgende VBA-Skript verwenden. Diese Anleitung basiert auf den Beiträgen von Benutzern im Forum.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf "Einfügen" und wähle "Modul".
  3. Kopiere den folgenden Code in das Modul:

    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
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro „Doppeln“ auswählst und auf „Ausführen“ klickst.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Überprüfe, ob der Blattname im Code korrekt ist. Der Code muss an das tatsächliche Arbeitsblatt angepasst werden.
  • Arbeitspaket nicht gefunden: Stelle sicher, dass der Wert in Zelle C3 existiert und genau mit dem Wert in Spalte B übereinstimmt.
  • Kein Fehler, aber keine Aktion: Überprüfe die Werte in C3 und D3, um sicherzustellen, dass sie tatsächlich in den entsprechenden Spalten vorhanden sind.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du die Funktion SVERWEIS oder FILTER in Excel verwenden, um die entsprechenden Werte zu suchen. Beispielsweise:

=SVERWEIS(C3;B10:C100;2;FALSCH)

Diese Formel sucht den Wert in C3 in der Spalte B10:B100 und gibt den entsprechenden Wert aus der zweiten Spalte zurück.


Praktische Beispiele

Angenommen, du hast folgende Daten:

Spalte B:            Spalte C:
Kabel                  Blockschaltbild
Kabel                  Schaltplan
FBG                    Blockschaltbild

Wenn du in C3 „FBG“ und in D3 „Blockschaltbild“ eingibst, wird das Makro die entsprechende Zeile finden und duplizieren.


Tipps für Profis

  • Optimierung des Codes: Du kannst den Code weiter optimieren, indem du die Anzahl der Schleifen reduzierst oder die Verwendung von With-Blöcken erhöhst.
  • Fehlerbehandlung: Integriere mehr Fehlerbehandlungsroutinen, um sicherzustellen, dass der Code robust gegenüber unerwarteten Eingaben ist.
  • Code kommentieren: Kommentiere deinen Code ausführlich, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nicht?
Überprüfe, ob alle Zellreferenzen korrekt sind und ob das entsprechende Arbeitsblatt aktiv ist.

2. Kann ich das Makro anpassen?
Ja, du kannst das Makro leicht anpassen, indem du die Zellreferenzen änderst und weitere Funktionen hinzufügst.

3. Was ist der Unterschied zwischen Find und SVERWEIS?
Find sucht in einer Range und gibt die Adresse zurück, während SVERWEIS einen Wert in einer Tabelle sucht und einen Ergebniswert zurückgibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige