Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
396to400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
396to400
396to400
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

suchfunktion

suchfunktion
12.03.2004 00:04:43
Monika
Abend!
Ich brauche eine Suchfunktion. Sie soll im Sheet nach Daten suchen, ich möchte dies über eine userform realisieren. Dass man in einer Textbox einen Wert eingibt und danach gesucht wird. Allerdings ist das etwas schwierig, da auch falsch eingegebene Daten gesucht werden sollen.
Wenn man also zB Meier eingibt, soll auch Meyer gefunden werden.

Danke Euch, Ihr lieben Helfer!
Monika

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: suchfunktion
12.03.2004 00:21:32
Sven
Da gibts doch eine eingebaute Funktion, warum das Fahrad neu erfinden, zumal du das
so perfekt mit deinen Kenntnissen sowieso nicht hinbekommst.
Sven
AW: suchfunktion
12.03.2004 00:24:17
Monika
Abend Sven,
doch, denke, dass ich es hinbekomme, mit etwas Hilfe!
habe textboxen erstellt, für name vorname usw. jeder datensatz steht in einer eigenen spalte. aber wie kann ich - am besten in einem listenfeld oder so - alle gefundenen datendarstellen?
Monika
AW: suchfunktion
12.03.2004 00:41:54
Monika
Ich habe hier mal eine bsp UF erstellt, für alle die mir helfen wollen.
in dem Sheet Daten werden alle Kunden erfasst. nach den werten möchte ich dann suchen können.
Ich würde mich so super freuen, wenn mir jemand helfen könnte!!!!!!
Monika
https://www.herber.de/bbs/user/4233.xls
Anzeige
AW: suchfunktion
12.03.2004 07:59:04
Christoph
Hallo Monika,
wenn ich dich richtig verstehe, dann willst du in einem Textfeld z.B den Suchbegriff: Ma* eingeben, und anschließend werden dir alle "Maier, Mayer, Maurer, etc..." zur Auswahl hestellt.
Dazu brauchst du ein Textfeld, in dem die Eingaben nach dem Muster erfolgen:
* für beliebige Zeichenkette (Bsp: s.o.)
? für genau ein beliebiges Zeichen (also Ma?er ergibt Maier und Mayer)
Anschließend durchläufst du deine Spalte "Namen" im Tabellenblatt "Daten" und suchst nach jedem Eintrag, der mit dem Suchmuster übereinstimmt.
Alle gefundenen Einträge übergibst du an eine ComboBox, so dass du hier unter den gefundenen den passenden auswählen kannst.
BeispielCode s.u.
Gruß
Christoph
('ne Rückmeldung wäre nett)
Option Explicit

Private Sub TextBox1_Change()
Dim LRow As Long, i As Long
Dim wks1 As Worksheet
Set wks1 = Worksheets("Daten")
LRow = wks1.Cells(Rows.Count, 1).End(xlUp).Row
With Me
ComboBox1.Clear
For i = 2 To LRow
If wks1.Cells(i, 1).Value Like TextBox1.Text Then
With .ComboBox1
.AddItem wks1.Cells(i, 1)
End With
End If
Next i
End With
End Sub

Anzeige
AW: suchfunktion
12.03.2004 17:01:51
Monika
Hallo Christoph!
Vielen Dank für Deine Hilfe, genau das habe ich gesucht!!
Ich habe das nu in eine test UF gemacht, den Code reinkopiert und die beiden Felder erstellt. Nur funzt das irgendwie nicht.
Was habe ich vergessen, was habe ich nicht beachtet?

Danke für Deine Hilfe Christoph!
Monika
AW: suchfunktion
12.03.2004 17:21:14
Christoph
Hi Monika,
solange die Textbox als "TextBox1" bezeichnest und die Combobox als "ComboBox1"
müsste es eigentlich laufen. Das ganze gehört in die "TextBox1_Change-Anweisung"
das heißt, mit einer Änderung in TextBox1 wird das Makro ausgeführt. (nicht mit deiner Schaltfläche - das kann man natürlich auch, aber warum nochmal klicken?)
Ich hab dir die Datei mal hochgeladen:
https://www.herber.de/bbs/user/4254.xls
gib einfach in die Suchspalte z.B: M*er ein und schau dann was im Feld Name zur Auswahl steht.
Gruß
Christoph
('ne Rückmeldung wäre nett)
Anzeige
AW: suchfunktion
12.03.2004 17:15:57
Monika
Juhu!!
Es klappt!!!!
Jetzt habe ich aber noch zwei Fragen:
Ist es auch möglich, nach mehreren Feldern zu suchen? also dass man zb Vor- und Nachname eingibt? In der Combobox soll dann nicht nur der einzelne Name stehen, sondern alle 5 Spalten.....
wie kann ich (oder Du) es verwirklichen, dass wenn man einen kunden dann gefunden hat, ihn auswählt (zb über einen button) dass alle daten des kunden in eine andere uf eingelesen werden? Es gibt dafür noch andere Spalten als die 5......
Nochmal danke Christoph!
Monika
Danke für die Rückmeldung
12.03.2004 17:47:45
Christoph
Hi Monika,
Für mehrspaltige Einträge ist evt. eine ListBox geeigneter.
gehn tut prinzipiell alles. Aber da werden noch 100 Fragen auf dich zukommen, die es zu lösen gilt. Alles in Allem ist das dann doch eher ein Programmierprojekt. Wenn du, wie du schreibst kein VBA kannst, dann hast du da noch was vor dir. (z.B: wie sortiert man die Daten in der ComBoBox, wie schließt man dopplete aus, usw.)
Zu vielen Fragen gibt es Tipps in der Recherche.
Und zunächst sind noch ganz andere Fragen zu lösen. Um Wieviele Daten handelt es sich.
Excel wird irgendwann mal sehr langsam, wenn es zu viele Operationen ausführen muss. Da eignet sich eher Access (auch das geht nur mit VBA)
Dann müsste man sich aber zunächst noch Gedanken über das Datenmodell machen, etc, etc.
Ich will dir nicht den Mut nehmen.
Setzt dich dran! Aber es sind viele Hürden zu überwinden.
viele Grüße
Christoph
Anzeige
AW: Danke für die Rückmeldung
12.03.2004 17:57:11
Monika
Den Mut hast Du mir jetzt etwas genommen :-(
es kann sich um Datensätze bis zu 60' handeln........
Access hab ich noch NIE benutzt!!
Dass das Suchen dann evtl. etwas dauert, ist nicht so schlimm.
ich werde die datei mal bißchen prog, dann lade ich dir die datei mal hoch..... (wenn du mir noch helfen möchtest)
am besten gibst du mir vielleicht Deine Email??
Monika
Wieviele?
12.03.2004 19:15:11
Christoph
Hallo Monika,
der Server hat ab und zu Probleme bei der Übertragung.
sprichst du von 60 Daten (=Personen) oder 60000?
Gruß
Christoph
AW: Wieviele?
13.03.2004 00:21:48
Monika
60.000 ! ich habe es eben einfach mal mühevoll getestet, und 20.000 Datensätze erstellt. Das geht von der Geschwindigkeit eigentlich noch ganz gut......
ich habe mir etwas überlegt, dafür bräuchte ich aber noch einen Code, der in Spalte A die Zelle anwählt, in welcher der Datensatz gefunden wurde. (ich spreche davon, wenn man einen Wert aus der (nun) Listbox wählt).
Ansonsten habe ich mir überlegt, dass die Suche nach einem WErt ausreichen wird.
Ich habe hierbei versucht, den Code anzupassen, wärst Du so nett und könntest mir kurz neben die Zeilen schreiben, was damit genauer angesprochen wird?
Danke Dir!
Monika
Anzeige
Noch ein paar Tipps
13.03.2004 09:27:03
Christoph
Hi Monika,
verlass dich bitte nicht NUR auf meine Aussage, bezüglich der Datenmenge. Aber bei 60.000 Datensätzen ist Excel nicht geeignet. Excel ist ein Tabellenkalkulationsprogramm (und in diesem Bereich hervorragend) aber eben keine Datenbank.
Bei Datenbanken geht es darum, die Datensätze eineindeutig (in der Mathemathik heißt das so) darstellen bzw. zu referenzieren - man spricht auch von "referenzieller Integrität".
Ein Bsp: 100 Kunde (= 100 Kontakte) arbeiten bei Firma "xyz". In Excel gibtst du für jeden Kunden den Firmennamen neu ein. (dann werden dabei wahrscheinlich 10 verschiedene Versionen des Firmennamens entstehen: Xyz, X-yz, xyz AG, xyz Abteilung..., etc)
Abgesehen von solchen möglichen Schreibfehlern wird die Tabelle mit jedem Eintrag größer.
Noch ein Bsp:
Die Firma wechselt ihre Anschrift (zieht um). Dann hast du in Excel nur durch aufwendige Operationen die Möglichkeit, für jeden der 100 Einträge, die Daten zu aktualisieren. Und wenn du einen vergisst, dann gibt es diese Firma in deiner Tabelle mit zwei Adressen.
Später weiss man nicht mehr, welche Adresse stimmt, und wenn so ein doppelter Eintrag in deiner Tabelle öfters vorkommt, dann "schmeißt" man das Teil entweder in die Ecke, oder man setzt sich ein paar Wochen dran und recherchiert jeden einzelnen Datensatz.
In einer Datenbank steht die Firma "xyz" genau einmal in einer Tabelle und es wird zu jedem der 100 Kunden lediglich ein Bezug zu diesem Eintag "xyz" erstellt.
Und zum Dritten:
In deiner Tabelle "Daten" fügst du aus versehen irgendwo eine Zelle ein. (eben ein Mausklick zu viel). Anschließend sind in dieser Spalte alle Daten um eins verschoben. Das merkst du aber nicht gleich, sondern erst nach zwei Wochen. Jetzt sind schon wieder ein paar neue Daten dazugekommen. Du kannst dir ausrechenen, wie lange du brauchst, um das wieder hinzubiegen.
Ausserdem stellt sich die Frage, wieviele Leute greifen auf die Daten zu, wieviele Leute müssen gleichzeitig Daten ändern konnen, etc, etc. Eine Multi-User-Möglichkeit gibt es in Excel (meines Wissens) nicht. (außer über Tabellenfreigabe, das ist aber nicht das, was eine Datenbank bietet)
Also, ich kann dir nur empfehlen, tu dir selbst den Gefallen und nimm eine Datenbank. Access, oder besser noch MySql (seit dem Zusammenschluss mit SAP heißt das MaxDB). Mit dem Problem, dass man sich hier erst mal ein Datenmodell überlegen muss, etc, etc.
Das soll dich nicht davon abhalten, an deinen Eingabmasken weiter zu bauen. Denn was du hier an VBA einbringst, kannst du in Access auch wieder verwenden. (zwar nicht 1:1 aber zum größten Teil)
Ich hab damit zwar noch keine Erfahrung, aber ich schätze, man könnte deine Excel-Masken auch als "Frontend" der Datenbank benutzen - sprich die DB läuft auf einem Server und die Eingaben erfolgen über deine Excel-Masken.
Kennst du schon die geniale Recherche-Funktion hier im Forum über Google:
gib bei Goolge zB. ein:
"ComboBox mehrspaltig site:www.herber.de" (ohne Anführungszeichen)
Ein gutes Forum zu Access findest du bei www.spotlight.de
viele Grüße
Christoph Meffert
und jetzt zu dem Code:
Option Explicit

Private Sub TextBox1_Change()
Dim LRow As Long, i As Long
Dim wks1 As Worksheet
Set wks1 = Worksheets("Daten")                 'deine Tabelle
LRow = wks1.Cells(Rows.Count, 1).End(xlUp).Row 'sucht von unten (Zeile 65536) nach oben
'die letzte Zeile mit einem Eintrag in Spalte 1
With Me                                        'die UserForm
ComboBox1.Clear                              'Einträge erst löschen, sonst kämen die neuen einfach dazu
For i = 2 To LRow                            'von Zeile 2 bis zur letzten Zeile mit Eintrag
If wks1.Cells(i, 1).Value Like TextBox1.Text Then   'wenn der Wert einer Zelle in Spalte1 ähnlich ist
'(Verwendung von * und ?) wie der Textbox-Eintrag, dann:
With .ComboBox1
.AddItem wks1.Cells(i, 1)        'füge diesen Wert der Spalte1 in die Liste der ComboBox hinzu
'Der Eintrag aus Spalte2 wäre dann Cells(i, 2)
End With
End If
Next i
End With
End Sub

Anzeige
AW: Noch ein paar Tipps
14.03.2004 02:00:51
Monika
Hallo Christoph!
Vielen Dank erstmal für Deine Mühe mir all das zu erlären.
Ich habe lange darüber nachgedacht und ich glaube, ich werde nicht weiter daran programmieren. Dies nimmt dann doch alles viel zu viel Zeit in Anspruch, die ich leider nicht habe.
Zudem besitze ich Access noch nicht.
Aber ich muss Dir echt danken, dass Du mir gezeigt hast, wie viel Arbeit doch dahinter steckt, bevor ich weiter viel Zeit investiert habe um dann enttäuscht zu werden.
Also, dank Dir! und wir "sehen" uns bestimmt wieder!
Monika
Danke für die Rückmeldung
14.03.2004 09:22:44
Christoph Meffert
Hi Monika,
wie gesagt, ich wollte dir nicht den Mut nehmen, aber ich weiss aus meiner eigenen Erfahrung (ich hab vor ca. einem Jahr genauso angefangen wie du), was das für ein riesiges und teilweise schwieriges Thema ist.
viele Grüße und ein schönes Wochenende
Christoph Meffert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige