Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel - Navigationshilfe in großer Liste





Frage

Hallo, folgende Idee würde ich gern in meiner Excel Tabelle umsetzen: Habe eine Excel Tabelle mit vielen Namen. Wenn ich jetzt in z.B. in E5 ein G eingeben würde, sollte ich mich gleich bei dem ersten Eintrag mit G wiederfinden. So würde ich mir ein langes Scrollen ersparen. Evtl. hat jemand eine Idee wie ich so etwas umsetzen kann. Vielen Dank im voraus!!!!!!! Gruß Else

Antwort 1 von CaroS

Hallo Else,

es würde die Lösung des Problems grundsätzlich stark vereinfachen, wenn die Daten sortiert und in bestimmten, klar abgegrenzten Bereichen, am besten in einer Spalte vorliegen würden.

Dann: Ein Zeichen in E5 zu schreiben und die Eingabetaste (bzw. das grüne Häkchen) zu drücken kann Dich durch gewöhnliche Formelprogrammierung nicht an die gewünschte Stelle "beamen", in irgendeiner Weise ist dazu ein Makro oder VBA nötig. Wie sieht´s da bei Dir aus?

Ein etwas anderer Weg wäre, mit Filterung zu arbeiten, aber das ist dann auf jeden Fall auch mehr Handarbeit, als nur ein G in eine Zelle zu schreiben.

In welcher Richtung sollte denn Deiner Meinung nach die Lösung liegen?

CaroS

Antwort 2 von Else

An ein Makro bzw. VBA habe ich auch gedacht,
nur die Lösung fehlt mir dazu.

Die Daten sind alphabetisch sortiert,
nur bei 500 Namen ist es immer mit viel scrollen verbunden zum Ziel zu kommen.


Gruß
Else

Antwort 3 von Philipp

[Strg] + [F] und Buchstabe(n) eintippen - ?

Antwort 4 von nighty

hi all :)

hier ein beispiel :)

gruss nighty

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim suche1 As Range

rem deine eingabezelle
rem spalte 6 zeile 7

If Target.Column = 6 And Target.Row = 7 And Cells(Target.Row, Target.Column) <> "" Then

rem der suchbereich
rem zur zeit spalte a

Set suche1 = Range("A1:A65535").Find(Cells(Target.Row, Target.Column), LookIn:=xlValues)
If Not suche1 Is Nothing Then Cells(suche1.Row, suche1.Column).Select
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True
End Sub

einzufuegen unter alt f11/projektexplorer/DeineTabelle

Antwort 5 von nighty

hi philipp :))

fein das wusst ich net :))

gruss nighty

Antwort 6 von CaroS

Hallo Philipp (A3),

schlechte Idee, schon bemerkt? Else will eigentlich nur den Anfangsbuchstaben eintippen und dann in den richtigen Zeilen "landen". Nun lass das mal nicht das G sondern das N sein. Viel Spaß bei der Suche!

Da hängst Du zweimal auf jedem Ackermann, zweimal auf jedem Beckmann, viermal auf jedem Hannemann und was da sonst noch alles kommt, will ich gar nicht aufzählen.

Tippst Du jetzt Na ein, kann es sein, dass Du voll gegen die Wand fährst, weil es gar niemanden mit Na gibt, tippst Du Ne ein, kanns es Dir passieren, dass Du schon die Hälfte verpasst hast. Wobei die Wahrscheinlichkeit, mitten in einem falschen Wort zu landen, zwar immer kleiner wird, je mehr Buchstaben Du bei der Suche angibst, in demselben Maße wird aber auch die Wahrscheinlichkeit größer, überhaupt keinen Treffer mehr zu landen, weil die Zeichenfolgen gar nicht vorkommt.

Kleiner Trost: Mit Sch und Groß-/Kleinschreibung beachten triffst Du bei 500 Namen fast immer im ersten Versuch.

Gruß,
Caro

Antwort 7 von Else

Erst mal besten Dank für Eure Hilfe!

@Nighty, ich habe noch Probleme Deinen Vorschlag "einzubauen" bzw. an meine Liste anzugleichen

In E5 möchte ich gerne meinen Suchbuchstaben eingeben
Die alphabetisch sortierten Nachnamen befinden sich in E8 bis E300

Gruß
Else

Antwort 8 von nighty

hi else :)

wenn es dann doch brauchbar ist dann vielleicht so

gruss nighty

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim suche1 As Range
If Target.Column = 5 And Target.Row = 5 And Cells(Target.Row, Target.Column) <> "" Then
Set suche1 = Range("E8:E300").Find(Cells(Target.Row, Target.Column), LookIn:=xlValues)
If Not suche1 Is Nothing Then Cells(suche1.Row, suche1.Column).Select
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True
End Sub

Antwort 9 von Else

hi nighty

SUPER, das läuft schon ganz gut!
Nur er springt nicht zum Anfangsbuchstaben,d.h.
gebe ich z.B. P als Suchbuchstaben ein sollte er z.B. nach Petermann springen.
Z.Zt. springt er z.B. nach Apel

Es wäre Klasse wenn Du da noch eine Lösung für hättest!!!!!!

Ich kann jetzt schon einfach nur DANKE sagen (schreiben)
Deine Arbeit kann man gar nicht genug loben!!!!

Gruß
Else

Antwort 10 von piano

Hallo
versuch es mit:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Dim suche1 As Range
If Target.Column = 5 And Target.Row = 5 And Cells(Target.Row, Target.Column) <> "" Then
For i = 1 To 300
    If Left(Cells(i, 1).Value, 1) = Left(Trim(Target.Value), 1) Then
        Cells(i, 1).Select
        Application.EnableEvents = True
        Exit For
    End If
Next i
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True

End Sub


Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -

Antwort 11 von Else

@piano

Dieser Vorschlag geht leider gar nicht.......

Oder mach irgend etwas verkehrt????


Gruß
Else

Antwort 12 von nighty

hi else :)

so vielleicht besser

gruss nighty

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
If Target.Column = 5 And Target.Row = 5 And Cells(Target.Row, Target.Column) <> "" Then
Cells.Find(What:=Cells(Target.Row, Target.Column), After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True).Activate
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True
End Sub

Antwort 13 von nighty

hi else :)

wie immer korrigiert :)))

gruss nighty

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim suche1 As Range
If Target.Column = 5 And Target.Row = 5 And Cells(Target.Row, Target.Column) <> "" Then
Set suche1 = Range("E7:E300").Find(Cells(Target.Row, Target.Column), LookIn:=xlValues, MatchCase:=True)
If Not suche1 Is Nothing Then Cells(suche1.Row, suche1.Column).Select
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True
End Sub

Antwort 14 von piano

Hallo
Geht nicht ist vielleicht ne Versionsfrage.
nimm "Sub Worksheet_Change(ByVal Target As Excel.Range) ".
aber die Versionen von @nighty bringen immer den ersten gefundenen Buchstaben und nicht die Anfangsbuchstaben.
Mein Beispiel war für Spalte A ab Zeile 1.
Ändere:
For i = 8 To 300
    If Left(Cells(i, 5).Value, 1) = Left(Trim(Target.Value), 1) Then
        Cells(i, 5).Select
        Application.EnableEvents = True
        Exit For
    End If
Next i

Dieser Code funktionirt garantiert - getestet!
Gruß piano

Antwort 15 von Else

Hallo!

@nighty: Dein letzter Vorschlag läuft sehr gut, nur muß ich den Suchbuchstaben Großgeschrieben eingeben. Kann man die Zelle mit dem Suchbuchstaben irgend wie formatieren, so das dort automatisch Großgeschrieben wird?

nighty, kann sein das ich es etwas zu genau haben möchte? Dann entschuldige bitte!!!!!!

@piano: Ich habe Deine Vorschläge versucht umzusetzen, aber leider ohne Erfolg. Wenn Du es getestet hast und es bei mir nicht geht, so muß ich irgend wo einen Fehler machen, nur wo?

Auf jeden Fall danke ich Euch beiden!!!!!!!!

Gruß
Else

Antwort 16 von nighty

hi else :)

dann so :)

gruss nighty

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim suche1 As Range
If Target.Column = 5 And Target.Row = 5 And Cells(Target.Row, Target.Column) <> "" Then
Set suche1 = Range("E7:E300").Find(UCase(Cells(Target.Row, Target.Column)), LookIn:=xlValues, MatchCase:=True)
If Not suche1 Is Nothing Then Cells(suche1.Row, suche1.Column).Select
Cells(Target.Row, Target.Column) = ""
End If
Application.EnableEvents = True
End Sub

Antwort 17 von Else

Hallo nighty,

Suuuuuuuuuuper!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Nun ist es so wie ich es mir vorgestellt habe!!!

Danke und noch einmal Danke für Deine Hilfe und vor allen für Deine Ausdauer. Ich hatte ja auch jedes mal wieder etwas zu "meckern".

Gruß
Else

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: