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

Forumthread: Zellinhalt in Spalte finden und zur Zeile springen

Zellinhalt in Spalte finden und zur Zeile springen
12.08.2017 12:31:26
Jan
Moin Leute,
ich weiß nicht wie lange ich hier nichts gepostet habe,
daher noch einmal kurz: Ich heisse Jan und würde mich über Hilfe freuen,
meine Excel Kenntnisse basieren mehr auf Try and Error, Codes googeln,
herumprobieren etc. als auf gelerntem, Daher bitte ich um Nachsicht, ich kann Codes aber recht gut verstehen mittlerweile.
Zur Aufgabe:
In meiner Tabelle ermittle ich über eine (nicht VBA) WENN Funktion
in den Zellen L3 bis L96 eine Bedingung wenn Gewissen Vorgaben in selber Zeile
erfüllt. Mittels Button und Verknüpften Modul mit Sub möchte ich per Klick
in die erste Zelle von oben angefangen springen, in der die Bedingung erfüllt ist.
Ich habe über Makro Aufzeichnung und Excel Suchfunktion herumprobiert, mein Problem
ist jedoch das Excel jede Zelle anspringt da ja in jeder Zelle in der WENN Funktion
gesuchter Text vorhanden ist. Ebenfalls versucht habe ich es über Bedingte Formatierung, leider auch ohne Erfolg.
Wie muss der Code also lauten, kann man nach erfüllten WENN Bedingungen in
der betroffenen Spalte suchen?
ALternativ habe ich versucht in der Spalte M3:M96 Wert 0 / Wert 1 auszugeben
wenn Bedingung erfüllt und diese anzuspringen, auch ohne Erfolg.
Sollte ich spezieller erklären bitte ich um Info.
Hier noch zur Hilfe die Wenn Funktion:
WENN(M3=1;"
LG Jan
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit HYPERLINK() und ...
12.08.2017 13:20:46
...
Hallo Jan,
... und z.B. VERGLEICH() je nachdem wie Deine Bedingung definiert ist.
so: =HYPERLINK("#L"&VERGLEICH([Dein zu suchender Wert];L3:L96;0);"hier klicken, dann landest Du beim gesuchten")
Worin Du "[Dein zu suchender Wert]" auch wiederum bei Bedarf erst mit einer Formel ermitteln kannst.
Gruß Werner
.. , - ...
Anzeige
AW: Zellinhalt in Spalte finden und zur Zeile springen
13.08.2017 09:13:49
Jan
Moin und danke für die Anregung,
ich habe es auch zum laufen bekommen,
jedoch würde ich gerne über einen Button mit Makro gehen,
ich bräuchte also eine Lösung in VBA.
AW: Zellinhalt in Spalte finden und zur Zeile springen
13.08.2017 09:44:55
Sepp
Hallo Jan,
in das Modul der Tabelle.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private rng As Range

Sub getNext()
If rng Is Nothing Then
  Set rng = Range("L3:L96").Find(What:="Fehleingabe", After:=Range("L3"), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
  If Not rng Is Nothing Then Application.Goto rng
Else
  Set rng = Range("L3:L96").FindNext(rng)
  If Not rng Is Nothing Then Application.Goto rng
End If
End Sub

Sub getPrevious()
If rng Is Nothing Then
  Set rng = Range("L3:L96").Find(What:="Fehleingabe", After:=Range("L96"), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
  If Not rng Is Nothing Then Application.Goto rng
Else
  Set rng = Range("L3:L96").FindPrevious(rng)
  If Not rng Is Nothing Then Application.Goto rng
End If
End Sub

Am einfachsten bedienst du die Makros, wenn du ihnen jeweils eine Tastenkombination zuweist.
Gruß Sepp

Anzeige
andere Version
13.08.2017 12:42:30
Sepp
Hallo Jan,
hier eine andere Version.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub getNext()
Call getFind(Range("L3:L96"), "Fehleingabe", xlNext)
End Sub

Sub getPrevious()
Call getFind(Range("L3:L96"), "Fehleingabe", xlPrevious)
End Sub

Private Sub getFind(ByRef Target As Range, ByVal FindWhat As Variant, ByVal Direction As XlSearchDirection)
Dim firstCell As Range
Static rng As Range

With Target
  If rng Is Nothing Then
    Set firstCell = IIf(Direction = xlNext, .Cells(1, 1), .Cells(.Rows.Count, .Columns.Count))
    Set rng = .Find(What:=FindWhat, After:=firstCell, LookIn:=xlValues, LookAt:=xlPart, _
      SearchDirection:=Direction, MatchCase:=False, SearchFormat:=False)
  Else
    Set rng = IIf(Direction = xlNext, .FindNext(rng), .FindPrevious(rng))
  End If
End With

If Not rng Is Nothing Then Application.Goto rng
End Sub

Gruß Sepp

Anzeige
AW: Zellinhalt in Spalte finden und zur Zeile springen
13.08.2017 19:02:50
Jan
Danke Sepp,
läuft perfekt :-)!
;

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

Zellinhalt in Spalte finden und zur Zeile springen


Schritt-für-Schritt-Anleitung

Um in Excel einen Zellinhalt zu finden und zur entsprechenden Zeile zu springen, kannst du folgende Schritte durchführen:

  1. Öffne deine Excel-Tabelle und gehe zum VBA-Editor, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul unter "Einfügen" > "Modul".

  3. Füge den folgenden VBA-Code ein:

    Option Explicit
    
    Private rng As Range
    
    Sub getNext()
        If rng Is Nothing Then
            Set rng = Range("L3:L96").Find(What:="Fehleingabe", After:=Range("L3"), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
            If Not rng Is Nothing Then Application.Goto rng
        Else
            Set rng = Range("L3:L96").FindNext(rng)
            If Not rng Is Nothing Then Application.Goto rng
        End If
    End Sub
    
    Sub getPrevious()
        If rng Is Nothing Then
            Set rng = Range("L3:L96").Find(What:="Fehleingabe", After:=Range("L96"), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
            If Not rng Is Nothing Then Application.Goto rng
        Else
            Set rng = Range("L3:L96").FindPrevious(rng)
            If Not rng Is Nothing Then Application.Goto rng
        End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu deiner Excel-Tabelle zurück.

  5. Füge einen Button hinzu: Gehe zu "Entwicklertools" > "Einfügen" und wähle einen Button aus. Weisen den Makros getNext oder getPrevious zu.

  6. Klicke auf den Button, um zur nächsten oder vorherigen Zelle mit dem gesuchten Inhalt zu springen.


Häufige Fehler und Lösungen

  • Problem: Der Makro springt nicht zur richtigen Zelle.

    • Lösung: Überprüfe, ob der gesuchte Text genau mit dem Text in den Zellen übereinstimmt. Achte auf Leerzeichen und Groß-/Kleinschreibung.
  • Problem: Die Funktion Find gibt eine Fehlermeldung zurück.

    • Lösung: Stelle sicher, dass der Zellbereich korrekt definiert ist (z.B. L3:L96), und dass der gesuchte Wert tatsächlich vorhanden ist.
  • Problem: Excel springt zu jeder Zelle.

    • Lösung: Achte darauf, dass die Bedingung in der Find-Methode korrekt definiert ist (z.B. LookAt:=xlPart).

Alternative Methoden

  1. Mit HYPERLINK(): Du kannst auch die Funktion HYPERLINK verwenden, um in eine bestimmte Zelle zu springen. Zum Beispiel:

    =HYPERLINK("#L" & VERGLEICH("Fehleingabe", L3:L96, 0), "Hier klicken")
  2. Tastenkombinationen: Nutze die F5-Taste (Gehe zu) und gebe die Zelladresse direkt ein, um schnell zu einer bestimmten Zelle zu springen.

  3. Verknüpfte Zellen: Du kannst auch mit Links in Zellen arbeiten, um bequem zu einer bestimmten Zelle zu springen.


Praktische Beispiele

  • Beispiel 1: Wenn du in der Spalte L nach dem Wert "Fehleingabe" suchst, kannst du den Code so anpassen:

    Set rng = Range("L3:L96").Find(What:="DeinWert", LookIn:=xlValues)
  • Beispiel 2: Um in eine bestimmte Zeile zu springen, kannst du die Application.Goto-Methode verwenden:

    Application.Goto Range("L10")

Tipps für Profis

  • Tastenkombinationen: Weise deinen Makros Tastenkombinationen zu, um die Navigation zu beschleunigen. Zum Beispiel CTRL + SHIFT + N für getNext.

  • Bedingte Formatierung: Nutze bedingte Formatierungen, um Zellen hervorzuheben, die den gesuchten Wert enthalten.

  • VBA-Optimierung: Wenn du häufig mit großen Datenmengen arbeitest, kannst du die Application.ScreenUpdating-Eigenschaft verwenden, um die Performance zu steigern.


FAQ: Häufige Fragen

1. Wie kann ich in eine bestimmte Zeile springen? Du kannst die Application.Goto-Methode verwenden, um direkt in eine bestimmte Zeile zu springen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, die beschriebenen Methoden und der VBA-Code sollten in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren.

3. Kann ich den Suchtext dynamisch gestalten? Ja, du kannst den Suchtext in einer Zelle definieren und diesen Wert dann im VBA-Code verwenden.

4. Wie kann ich die Startzelle für die Suche ändern? Ändere den Zellbereich in der Find-Methode, um eine andere Startzelle zu definieren, z.B. Range("L5:L100").

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