Supportnet Computer
Planet of Tech

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

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

Antwort 3 von nighty

hi peko :)

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

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

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

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

Antwort 8 von MaxR

Vielen Dank.

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

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

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.

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

Antwort 13 von Mike_AUT

danke Leute - es hat geklappt

thx

Antwort 14 von nighty

hi mike :)

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.

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: