Supportnet / Forum / Tabellenkalkulation
Suchfunktion im Excel
Frage
Hi!!
Ich habe eine irre lange Liste mit Ortsnamen, darin soll man nach bestimmten Namen suchen können. Am liebsten hätte ich dazu eine Zeile oben, in der ich den gewünschten Namen eingeben kann und dann springt mir Excel zur jeweiligen Zeile.
Ist das irgendwie möglich??
Dank schon im Voraus
Max
P.S.: Die normale Suchfunktion hab ich schon versucht und ich hab noch überhaupt keine Erfahrung mit Makros programmieren.
Antwort 1 von peko
Hallo MaxR,
folgendes Makro leistet, was du möchtest:
Sub suche()
Dim suchvar As String
Dim zielwert As String
Dim ende As Integer
ende = 20
i = 2
j = ActiveCell.Column
suchvar = ActiveCell.Value
schleife:
If i > ende Then
Cells(1, j).Activate
MsgBox "Wert " & suchvar & " nicht gefunden!": Exit Sub
End If
Cells(i, j).Activate
zielwert = ActiveCell.Value
If zielwert = suchvar Then
Exit Sub
Else: i = i + 1: GoTo schleife
End If
End Sub
Voraussetzung ist, dass in der ersten Zeile der Spalte, in der du suchen möchtest, der Suchbegriff steht und dass der Cursor sich bei Aufruf des Makros auf dieser Zelle befindet!
Der Wert "ende = 20" muss so geändert werden, dass er die Anzahl der Zeilen angibt, in denen gesucht werden soll.
Rückmeldung wäre nett.
Gruß peko
folgendes Makro leistet, was du möchtest:
Sub suche()
Dim suchvar As String
Dim zielwert As String
Dim ende As Integer
ende = 20
i = 2
j = ActiveCell.Column
suchvar = ActiveCell.Value
schleife:
If i > ende Then
Cells(1, j).Activate
MsgBox "Wert " & suchvar & " nicht gefunden!": Exit Sub
End If
Cells(i, j).Activate
zielwert = ActiveCell.Value
If zielwert = suchvar Then
Exit Sub
Else: i = i + 1: GoTo schleife
End If
End Sub
Voraussetzung ist, dass in der ersten Zeile der Spalte, in der du suchen möchtest, der Suchbegriff steht und dass der Cursor sich bei Aufruf des Makros auf dieser Zelle befindet!
Der Wert "ende = 20" muss so geändert werden, dass er die Anzahl der Zeilen angibt, in denen gesucht werden soll.
Rückmeldung wäre nett.
Gruß peko
Antwort 2 von nighty
hi peko :)
bei groesseren tabellen etwas schneller ist :)
gruss nighty
a1 ist der suchbegriff der in spalte a gesucht wird und hingesprungen wird bei fund
Sub makro01()
Dim suche1 As Range
Set suche1 = Worksheets(1).Range("A" & 2 & ":A" & Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Worksheets(1).Cells(1, 1))
If Not suche1 Is Nothing Then
Cells(suche1.Row, 1).Select
zaehler1 = zaehler2
End If
End Sub
bei groesseren tabellen etwas schneller ist :)
gruss nighty
a1 ist der suchbegriff der in spalte a gesucht wird und hingesprungen wird bei fund
Sub makro01()
Dim suche1 As Range
Set suche1 = Worksheets(1).Range("A" & 2 & ":A" & Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Worksheets(1).Cells(1, 1))
If Not suche1 Is Nothing Then
Cells(suche1.Row, 1).Select
zaehler1 = zaehler2
End If
End Sub
Antwort 3 von nighty
hi peko :)
das war noch ueberfluessig
zaehler1 = zaehler2
gruss nighty
das war noch ueberfluessig
zaehler1 = zaehler2
gruss nighty
Antwort 4 von peko
Hi nighty :-)
alles ok, aber dein Makro sollte auf jeden Fall noch so angepasst werden, dass in einer beliebigen Spalte gesucht werden kann.
Gruß peko
alles ok, aber dein Makro sollte auf jeden Fall noch so angepasst werden, dass in einer beliebigen Spalte gesucht werden kann.
Gruß peko
Antwort 5 von MaxR
@ peko
Danke, das Makro funktioniert super. Nur eine Frage noch, kann ich das irgendwie auch so einstellen, dass ich, sobald ich das Suchwort in die erste Zeile geschrieben habe, das Makro auf Tastendruck direkt starten kann??
Gruß Max
Danke, das Makro funktioniert super. Nur eine Frage noch, kann ich das irgendwie auch so einstellen, dass ich, sobald ich das Suchwort in die erste Zeile geschrieben habe, das Makro auf Tastendruck direkt starten kann??
Gruß Max
Antwort 6 von Janu
Gehe auf
Ansicht/Symbolleiste/Formular
Zieh dir eine "Befehlsschaltfläche" neben dein Sucheingabefeld.
Klick mit rechts auf den Rahmen der Schaltfläche, gehe auf Makro zuweisen, und wähle das Suchmakro aus.
ferig ist!
Gruß
Janu
Ansicht/Symbolleiste/Formular
Zieh dir eine "Befehlsschaltfläche" neben dein Sucheingabefeld.
Klick mit rechts auf den Rahmen der Schaltfläche, gehe auf Makro zuweisen, und wähle das Suchmakro aus.
ferig ist!
Gruß
Janu
Antwort 7 von nighty
hi peko :)
in diesem abschnitt sind die bereichsangaben,du brauchst nur das 2 grosse A gegen IV austauschen :)
("A" & 2 & ":A" & Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Worksheets(1).Cells(1, 1))
gruss nighty
in diesem abschnitt sind die bereichsangaben,du brauchst nur das 2 grosse A gegen IV austauschen :)
("A" & 2 & ":A" & Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Worksheets(1).Cells(1, 1))
gruss nighty
Antwort 8 von MaxR
Vielen Dank.
Funktioniert echt super!!
Lg Max
Funktioniert echt super!!
Lg Max
Antwort 9 von Mike_AUT
Ich bin gerade dabei eine Lexikon-Datenbank (wird nicht zu groß) anzulegen
In der Spalte A kommen die Fremdwörter bzw. Fachausdrücke, in der dazugehörigen Spalte B die deutschen Übersetzungen bzw. Beschreibung. (Blatte 2)
Ich möchte dann im separaten Blatt 1 eine Suchfunktion haben, wo ich das Fremdwort/Fachausdruck rein schreibe und dann durch Bestätigung in einem Ergebnisfeld die Beschreibung (Spalte B) anzeigen kann.
Wie kann ich das am besten lösen bzw. kann mir einer von Euch ein „Muster“ schicken wo ich nur noch meine Daten (Fremdwörter in die Spalten (A+B) eintragen muss?
Danke für Eure Hilfe.
Meine E-Mail: michael.scheil@demagcranes.at
PS: hab nicht sehr viel Erfahrung mir Makros im Excel
In der Spalte A kommen die Fremdwörter bzw. Fachausdrücke, in der dazugehörigen Spalte B die deutschen Übersetzungen bzw. Beschreibung. (Blatte 2)
Ich möchte dann im separaten Blatt 1 eine Suchfunktion haben, wo ich das Fremdwort/Fachausdruck rein schreibe und dann durch Bestätigung in einem Ergebnisfeld die Beschreibung (Spalte B) anzeigen kann.
Wie kann ich das am besten lösen bzw. kann mir einer von Euch ein „Muster“ schicken wo ich nur noch meine Daten (Fremdwörter in die Spalten (A+B) eintragen muss?
Danke für Eure Hilfe.
Meine E-Mail: michael.scheil@demagcranes.at
PS: hab nicht sehr viel Erfahrung mir Makros im Excel
Antwort 10 von nighty
hi mike :)
vielleicht so :))
von der aktiven tabelle ausgehend wird der suchbegriff aus der zelle A1 entnommen und in tabelle2 in spalte A gesucht,bei fund wird spalte b der selben zeile zur aktiven tabelle zelle B1 uebertragen
gruss nighty
Sub makro01()
Dim suche1 As Range
With Worksheets(2)
Set suche1 = .Range("A" & 1 & ":A" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Cells(1, 1))
Range("B1") = .Cells(suche1.Row, suche1.Column + 1)
End With
End Sub
vielleicht in einen button legen oder auf zellenwechsel reagieren bzw. ereignis nutzen
vielleicht so :))
von der aktiven tabelle ausgehend wird der suchbegriff aus der zelle A1 entnommen und in tabelle2 in spalte A gesucht,bei fund wird spalte b der selben zeile zur aktiven tabelle zelle B1 uebertragen
gruss nighty
Sub makro01()
Dim suche1 As Range
With Worksheets(2)
Set suche1 = .Range("A" & 1 & ":A" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Cells(1, 1))
Range("B1") = .Cells(suche1.Row, suche1.Column + 1)
End With
End Sub
vielleicht in einen button legen oder auf zellenwechsel reagieren bzw. ereignis nutzen
Antwort 11 von Mike_AUT
naja das hat zuerst (siehe oben) funktioniert - und jetzt jedoch nicht mehr.
es steht in der Ergebniszelle nur #NV bzw. dann #Wert
Wie gesagt ich kenn mich im Excel nicht so aus - darum die Bitte dass ich das file jemandem schicke kann der sich das anschaut
ist sicher nur ein kleiner Fehler drin :-))
Danke für Eure Hilfe.
es steht in der Ergebniszelle nur #NV bzw. dann #Wert
Wie gesagt ich kenn mich im Excel nicht so aus - darum die Bitte dass ich das file jemandem schicke kann der sich das anschaut
ist sicher nur ein kleiner Fehler drin :-))
Danke für Eure Hilfe.
Antwort 12 von nighty
hi mike :)
eine variante die auf ein ereignis ,hier des zellenwechsels reagiert
gruss nighty
f11 öffnet den vb editor
unter dessen iconleiste den projektexplorer oeffnen und dort mit doppelclick die tabelle anwählen wo die eingabe erfolgt,hier jetzt den code einfuegen der dann auf zellenwechsel reagiert
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Row = 1 Then
Dim suche1 As Range
With Worksheets(2)
Set suche1 = .Range("A" & 1 & ":A" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Cells(1, 1))
If Not suche1 Is Nothing Then
Range("B1") = .Cells(suche1.Row, suche1.Column + 1)
End If
End With
End If
Application.EnableEvents = True
End Sub
eine variante die auf ein ereignis ,hier des zellenwechsels reagiert
gruss nighty
f11 öffnet den vb editor
unter dessen iconleiste den projektexplorer oeffnen und dort mit doppelclick die tabelle anwählen wo die eingabe erfolgt,hier jetzt den code einfuegen der dann auf zellenwechsel reagiert
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Row = 1 Then
Dim suche1 As Range
With Worksheets(2)
Set suche1 = .Range("A" & 1 & ":A" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Cells(1, 1))
If Not suche1 Is Nothing Then
Range("B1") = .Cells(suche1.Row, suche1.Column + 1)
End If
End With
End If
Application.EnableEvents = True
End Sub
Antwort 13 von Mike_AUT
danke Leute - es hat geklappt
thx
thx
Antwort 14 von nighty
hi mike :)
hier noch eine formel variante :)
gruss nighty
=VERWEIS(A1;Tabelle2!A:A;Tabelle2!B:B)
hier noch eine formel variante :)
gruss nighty
=VERWEIS(A1;Tabelle2!A:A;Tabelle2!B:B)
Antwort 15 von fujtsu
Hat jemand eine Idee, wie ich das erste Element vom Typ Integer in einer Zeile suchen & selektieren kann??
Vor der Reihe mit Integer Werte stehen Strings.
Wichtig: Keine statische Lösung darf es sein, die sich auf den Wert/Bezeichner beziehen, da sich die Inhalte ständig ändern!! Deshalb Suche nach Datentyp.
Bsp:
A B C 1 2 3
Ergebnis wäre dann logischerweise "1".
Merci.
Vor der Reihe mit Integer Werte stehen Strings.
Wichtig: Keine statische Lösung darf es sein, die sich auf den Wert/Bezeichner beziehen, da sich die Inhalte ständig ändern!! Deshalb Suche nach Datentyp.
Bsp:
A B C 1 2 3
Ergebnis wäre dann logischerweise "1".
Merci.

