Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile nach Wert durchsuchen VBA

Zeile nach Wert durchsuchen VBA
13.08.2015 15:31:15
BADA
Hallo liebe Community,
ich habe ein Problem, welches sich hoffentlich mit euerer Hilfe lösen lässt.
Ich muss Daten aufbereiten, die in Excel als eine Tabelle importiert werden. Für mich wichtige Werte sind die, die sich in der Spalte "P22x998" befinden. So weit so gut. Nun variiert die Anzahl der Spalten, also auch die Koordinaten meiner Spalte von Datei zu Datei.
Da ich aber bestimmte werte aus der Spalte benötige, würde ich gerne die ganze erste Zeile nach dem Ausdruck "P22x998" durchsuchen. Die Stelle, an der sich Die Spalte befindet (also z.B. D = 4 oder E = 5) als Variable speichern ( z.B. Variable = 5 , für die STelle E)
Mit der Variable lässt sich dann arbeiten, denn danach greift mein Makro, welches mit den Koordinaten der Spalte und Zeile die richtigenWerte selbststäändig rauszieht.
Ich müsste das Makro nur noch mit der Koordinate der Spalte in der sich "P22x998" befindet speisen.
Hoffe das war nicht all zu verwirrend.
damit es vielleicht etwas verständlicher wird hier das Makro, welches mit der Koordinate gespeist werden soll:

  • Sheets("Tabelle1").Select
    Spalte = 34 'AH 'die 34 soll durch die Suche ausgegeben werden, hier sind meine Werte
    Set rngGesamt = Cells(2, Spalte)
    For Zeile = 12 To 1000 Step 9 'Ich benötige ab der 2. Zelle jeden 9. Wert (ist 'nicht so wichtig)
    Set rngGesamt = Union(rngGesamt, Cells(Zeile, Spalte))
    Next
    rngGesamt.Copy
    'Brereich einfügen
    Sheets("Tabelle2").Select
    Range("F14").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

  • Für Anregungen bin ich sehr dankbar!

    Anzeige

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    13.08.2015 15:56:34
    JoWE
    Hallo Bada,
    vllt. so: varSP = rows(1).find(what:="P22x998").column
    Gruß
    Jochen

    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 09:23:54
    Max
    Ich danke Dir vielmals Jochen! Sorry für die späte Antwort, hatte in den letzten Tagen leider keinen Internetzugriff...
    Sag mal, hast du eine Idee, wie ich eine Spalte nach der ersten leeren Zelle durchsuchen kann und die Koordinaten dieser dann in eine Variable schreiben kann? Also fast so wie in dem anderen Beispiel, varZL = 7 z.B. , wenn in der Spalte D die ersten 6 Zellen mit Zahlen gefüllt sind.
    hab vielen Dank!
    Gruß
    BADA

    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 10:53:29
    JoWE
    Hallo,
    so z.B.
    Beispiel 1 findet die erste leere Zelle in Spalte 1, die Suche bginnt ganz unten:
    ▲ erste_leere_Zelle_am_Ende = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Beispiel 2 findet die erste leere Zelle in Splate 1, die Suche beginnt ganz oben:
    ▲ erste_leere_Zelle = Sheets("Tabelle1").Cells(1, 1).End(xlDown).Row + 1
    Gruß
    Jochen

    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 11:58:11
    BADA
    Danke JoWe,
    es funktioniert :) habe mich für das Beispiel 2 entschieden.
    Gruß
    BADA

    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 12:58:33
    BADA
    Hi Jochen,
    gibtes eine Möglichkeit bei einem Nichtfinden von "P22x998" in der ersten Zeile, einen Error auszugeben? Eine MessageBox oder etwas änliches mit "P22x998 - nicht gefunden".
    Sonst läuft man Gefahr mit den falschen Werten zu arbeiten, wenn die tabelle nicht stimmt.
    Vielen Dank nochmal!
    Gruß
    BADA

    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 13:14:58
    JoWE
    schau Dir in der Online-Hilfe zu VBA mal etwas zu Fehlerhandlungsroutinen an.
    Und/oder lies hier: http://vba-tutorial.de/fehler/fehlerbehandlung.htm
    In etwa könnte man das so machen
    Sub test()
    Dim varSP As Long
    On Error GoTo fb
    varSP = ActiveSheet.Rows(1).Find(what:="P22x998").Column
    MsgBox "alles OK"
    'hier was soll passieren wenn die Makrobearbeitung hier wieder einsteigt?
    Exit Sub
    fb:
    MsgBox "P22x998 nicht gefunden", vbOKCancel, "Fehler"
    'entweder so:
    Resume Next '"macht bei 'MsgBox "alles ok"' weiter
    'oder so
    Exit 
    
    
    Sub 'steigt aus
    End Sub
    

    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 13:16:42
    JoWE
    schau Dir in der Online-Hilfe zu VBA mal etwas zu Fehlerhandlungsroutinen an.
    Und/oder lies hier: http://vba-tutorial.de/fehler/fehlerbehandlung.htm
    In etwa könnte man das so machen
    Sub test()
    Dim varSP As Long
    On Error GoTo fb
    varSP = ActiveSheet.Rows(1).Find(what:="P22x998").Column
    MsgBox "alles OK"
    'hier was soll passieren wenn die Makrobearbeitung hier wieder einsteigt?
    Exit Sub
    fb:
    MsgBox "P22x998 nicht gefunden", vbOKCancel, "Fehler"
    'entweder so:
    Resume Next 'macht bei MsgBox alles ok weiter
    'oder assteigen
    Exit Sub
    End Sub
    

    Anzeige
    AW: Zeile nach Wert durchsuchen VBA
    18.08.2015 13:40:29
    BADA
    Vielen vielen Dank!
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    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

    Zeile nach Wert durchsuchen mit VBA


    Schritt-für-Schritt-Anleitung

    Um eine bestimmte Zeile in Excel nach einem Wert zu durchsuchen, kannst du VBA nutzen. Hier ist eine Schritt-für-Schritt-Anleitung:

    1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
    2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
    3. Füge den Code ein:
    Sub SucheNachWert()
        Dim varSP As Long
        On Error GoTo fb
        varSP = ActiveSheet.Rows(1).Find(what:="P22x998").Column
        MsgBox "Der Wert wurde in Spalte " & varSP & " gefunden."
        Exit Sub
    fb:
        MsgBox "P22x998 nicht gefunden", vbOKCancel, "Fehler"
    End Sub
    1. Führe das Makro aus: Drücke F5 oder wähle das Makro aus und klicke auf "Ausführen".

    Dieser Code sucht in der ersten Zeile nach dem Wert "P22x998" und gibt die Spaltennummer zurück. Wenn der Wert nicht gefunden wird, erscheint eine Fehlermeldung.


    Häufige Fehler und Lösungen

    1. Fehler: "P22x998 nicht gefunden"

      • Lösung: Stelle sicher, dass der Wert in der ersten Zeile tatsächlich vorhanden ist. Überprüfe auch die Schreibweise und Formatierung des Suchbegriffs.
    2. Fehler: Laufzeitfehler 91

      • Lösung: Dieser Fehler tritt auf, wenn die Find-Methode kein Ergebnis zurückgibt. Verwende die Fehlerbehandlungsroutine, um dieses Problem zu lösen.

    Alternative Methoden

    Neben der Find-Methode gibt es auch andere Möglichkeiten, einen Excel-Bereich nach einem Wert zu durchsuchen. Eine davon ist die Verwendung von AutoFilter:

    Sub FilterNachWert()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("Tabelle1")
    
        ws.Rows(1).AutoFilter Field:=1, Criteria1:="P22x998"
    End Sub

    Diese Methode filtert die erste Zeile und zeigt nur die Zeilen an, in denen "P22x998" in der ersten Spalte vorkommt.


    Praktische Beispiele

    Hier sind einige praktische Beispiele, wie du eine Spalte nach einem Wert durchsuchen kannst:

    • Beispiel 1: Suche nach dem ersten leeren Wert in einer Spalte:
    Sub ErsteLeereZelle()
        Dim ersteLeereZelle As Long
        ersteLeereZelle = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
        MsgBox "Die erste leere Zelle in Spalte A ist: " & ersteLeereZelle
    End Sub
    • Beispiel 2: Suche nach einem Wert und speichere die Spaltennummer:
    Sub SpalteNachWertDurchsuchen()
        Dim spalte As Long
        spalte = Rows(1).Find(what:="DeinWert").Column
        MsgBox "Der Wert ist in Spalte: " & spalte
    End Sub

    Tipps für Profis

    • Fehlerbehandlung optimieren: Nutze On Error Resume Next, um sicherzustellen, dass dein Makro weiterläuft, auch wenn ein Fehler auftritt. So kannst du die Robustheit deiner Makros erhöhen.

    • Suchkriterien anpassen: Wenn du nach mehreren Werten suchen möchtest, kannst du die Find-Methode in einer Schleife verwenden, um verschiedene Suchbegriffe zu durchlaufen.


    FAQ: Häufige Fragen

    1. Wie kann ich mehrere Werte gleichzeitig durchsuchen?
    Du musst eine Schleife verwenden, um durch die Liste der Werte zu iterieren und die Find-Methode für jeden Wert aufzurufen.

    2. Ist es möglich, die Suche auf einen bestimmten Bereich zu beschränken?
    Ja, du kannst die Find-Methode auf einen bestimmten Bereich anwenden, indem du den Bereich in der Methode angibst, z.B. Range("A1:D1").Find(...).

    3. Kann ich die Suche auch in einer anderen Zeile durchführen?
    Ja, ändere einfach die Zeilenindizes in der Find-Methode, um eine andere Zeile zu durchsuchen.

    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