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
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
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
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
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
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
@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
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
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:
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 -
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
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
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
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:
Dieser Code funktionirt garantiert - getestet!
Gruß piano
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
@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
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
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

