Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

Datenbank-Suchfunktion nach verschiedenen Levels

Datenbank-Suchfunktion nach verschiedenen Levels
14.02.2013 10:45:46
Pascal
Guten Tag
Ich stehe mal wieder vor einer VBA-Herausforderung bei der ich auf Eure Hilfe angewiesen bin.
Und zwar geht’s diesmal um Folgendes Vorhaben:
Aus einer Datenbank (Beinhaltet tausende Datensätze eines IT-Ticket-Tracking-Systems, welche ins Excel importiert wurden) sollen Datensätze – zwecks Erstellung Auswertungen und Statistiken – nach bestimmten
Levels (=Suchkriterien) durchsucht und klassiert werden können.
D.h. ich stell mir das so vor:
Der User wählt auf einer UserForm maximal drei Levels (=SubKriterien) nach welchen er suchen möchte, aus. Aus der Datenbank werden dann alle Datensätze, bei welchen diese Levels (Suchkriterien) übereinstimmen gesucht und auf ein neues Tabellenblatt in Excel geschrieben.
Beispiel.
User wählt auf der User-Form z.B. folgende drei Levels (=Kriterien) aus:
Level1: Software
Level2: SAP
Level3: Einkauf
Es sollen nun alle Datensätze, welche diese drei Levels beinhalten auf einem neuen Excel-Tabellenblatt aufgelistet werden. Die Levels sind in der Datenbank je in einer separaten Spalte zu finden. D.h. Level1 ist z.B. in Spalte G; Level2 in Spalte H; Level3 in Spalte I etc…
Wenn der User aber beispielsweise nur 2 Levels (=2 Kriterien) auswählt, so sollen alle Datensätze, bei welchen mindestens diese zwei Levels (Kriterien) übereinstimmen, aufgelistet werden auf einem neuen Tabellenblatt.
Wenn der User aber beispielsweise nur ein Level (=1 Kriterium) auswählt, so sollen alle Datensätze, bei welchen mindestens dieses Level (Kriterium) übereinstimmt, aufgelistet- und auf ein neues Tabellenblatt geschrieben werden.
Sozusagen soll über diese Funktionalität dann die Möglichkeit bestehen, die komplette, riesige Datenbank in verschiedene Bereiche zu unterteilen, mittels denen dann Statistiken und Auswertungen erstellt werden können.
Als Beispiel:
Aus dem kompletten Datenbank-Bestand möchte man beispielsweise alle Datensätze aufgelistet erhalten, bei welchen es sich um ein Software-Problem, aus dem Bereich SAP, im Prozess Einkauf handelt.
Dazu wählt der User auf der UserForm aus:
Level1: Software
Level2: SAP
Level3: Einkauf
Oder als weiteres Beispiel:
Aus dem kompletten Datenbank-Bestand möchte man beispielsweise alle Datensätze aufgelistet erhalten, bei welchen es sich um ein Software-Problem, aus dem Bereich SAP handelt
Dazu wählt der User auf der UserForm aus:
Level1: Software
Level2: SAP
Es werden dann (da nur zwei Levels ausgewählt wurden) alle Datensätze zu Software und SAP (egal aus welchem Level3) aufgelistet
Grundsätzlich kann man da sagen: je weniger Levels ausgewählt werden, umso mehr Datensätze werden dann auch aufgelistet.
Je mehr Levels man auswählt, desto weniger Datensätze werden schliesslich aufgelistet.
Ich hoffe, meine Frage / mein Vorhaben sei so einigermassen verständlich
Leider aber …. Weiss ich nicht genau, wie ich das angehen soll. Auch kann ich leider hier keine Datenbank hochladen, da diese – zu gross – und zuviele vertrauliche Daten behinhaltet.
Natürlich hoffe ich aber dennoch, dass mir jemand hier im Forum weiterhelfen- und auf mein Vorhaben hin unterstützen kann.
Im voraus herzlichen Dank !

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
an einer Bsp-Datei...
14.02.2013 13:51:48
Oberschlumpf
Hi Pascal
....wirst du sehr wahrscheinlich wohl nicht vorbeikommen...meine Meinung.
Es würde ja reichen, wenn du nur 5-10 Bsp-Datensätze erstellst.
Wichtig ist aber eben, dass die Bsp-Datei genau so viele Spalten enthält, wie die Originaldatei.
Und wenn möglich, sollten auch die Spaltennamen identisch sein.
Wenn das gegeben ist, denke ich, werden sich schnell(er) helfende Antworter finden.
Denn ich bin mir sicher, dass deine Frage beantwortbar ist - aber zumindest (auch?) ich hab nicht wirklich Lust, deine Datei erst mal "bauen" zu müssen, damit ich dann einen Lösungsweg erarbeiten kann.
Ciao erst mal
Thorsten

Anzeige
AW: an einer Bsp-Datei...
14.02.2013 15:02:23
Pascal
Hallo Oberschlumpf
besten Dank für deine Antwort. Natürlich hab ich zwischenzeitlich mich bemüht, eine Beispiels-Datei zusammenzustellen.
(ich wollte die auch ohne Aufforderung noch hier im Forum nachliefern)
https://www.herber.de/bbs/user/83912.zip
Unter den Makros hab ich auch bereits schon versucht, eine erste User-Form aufzubauen.
wäre wirklich super, wenn mir hier jemand etwas weiterhelfen könnte.
natürlich müsste ich dann die UserForm vielleicht noch etwas ausbauen / anpassen.

AW: an einer Bsp-Datei...
14.02.2013 16:09:08
Oberschlumpf
Hi Pascal
Ja, ich denke, mit der Bsp-Datei kann man etwas mehr anfangen.
Ich selbst habe aber erst heute abend oder morgen irgdwann wieder Zeit.
Ein kleiner Tipp:
So lange deine Frage auch mit deinen Beiträgen nicht beantwortet ist, setze immer den Haken, den du neben dem Eingabefeld für dein Passwort findest.
Bei gesetztem Haken wird deine Frage noch als "offen" markiert.
Viele Helfer schauen sich andere Fragen (ohne Haken) nicht an - und somit wärst du auf mich als Antworter "angewiesen" ;-)
Ciao
Thorsten

Anzeige
AW: an einer Bsp-Datei...
14.02.2013 16:15:00
Pascal
ok, danke für den hinweis.
ich werde heut Abend auch mal noch pröbeln
gerne erwarte ich deinen Vorschlag

AW: an einer Bsp-Datei...
18.02.2013 06:59:01
Pascal
... ich komm und komm nicht weiter mit meiner Beispielsdatei. D.h. zwar hab ich es nun geschafft, eine Userform einzubauen auf welcher der User die verschiedenen Levels auswählen kann, allerdings weiss ich nun nicht, wie ich die Suchfunktionen dazu programmieren muss.
währe wirklich toll, wenn mir jemand auf die Sprünge helfen könnte.
im voraus vielen dank !

AW: an einer Bsp-Datei...
19.02.2013 00:33:55
Matze
Hi Pascal,
hier mal eine ganz simple Lösung per Autofilter, angepasst an deine Musterdatei.
Filter setzen, dann den Button drücken.
https://www.herber.de/bbs/user/83960.xlsm
Die Profis machen aber auch deine Wünsche per UF , ich bin zu müde um mich da jetzt reinzu fuchsen.
Matze

Anzeige
AW: an einer Bsp-Datei...
19.02.2013 06:07:22
Oberschlumpf
HI Pascal,
sorry, ich war längere Zeit krank, deswegen kam nix von mir.
Und auch, wenn mein Bsp nun vllt zu spät kommt, weil die anderen Lösungsideen dir schon helfen, möcht ich trotzdem meine Idee zeigen.
Hier, versuch mal:
https://www.herber.de/bbs/user/83961.xlsm
Erklärung, wie der Code funktioniert, steht im Code.
Hilfts denn?
Ne Antwort wäre auf jeden Fall schön - für jeden, der versucht zu helfen.
Ciao
Thorsten

AW: an einer Bsp-Datei...
19.02.2013 07:50:04
Pascal
Hallo Oberschlumpf (Thorsten)
Deine Lösung gefällt mir supergut und - aufgrund deines sauber dokumentierten Codes - kann ich damit auch sehr viel Neues lernen.
Vielen Dank !
Der Code macht eigentlich soweit genau das, was ich mir wünsche, doch kam leider bereits schon eine neue Anforderung beim Projekt hinzu:
es sollten pro Level mehrere Sachen ausgewählt werden können.
d.h. es sollten zum Beispiel gewählt werden können:
Level1 = Software und Applikation
Level2 = Windows, Office und SAP
Level3 = Verkauf und Service
Sozusagen sollte man also in den Listboxen / Comboboxen mehrere Kriterien auswählen/markieren können.
diese Kriterien sollten dann alle gesucht werden.
ginge das irgendwie noch zu ergänzen ?
Herzlichen Dank für die Tips

Anzeige
AW: an einer Bsp-Datei...
19.02.2013 20:14:46
Oberschlumpf
Hi Pascal
Tja, schade, alles umsonst :-(
Wusstest du das mit

Level1 = Software und Applikation
Level2 = Windows, Office und SAP
Level3 = Verkauf und Service
Sozusagen sollte man also in den Listboxen / Comboboxen mehrere Kriterien auswählen/markieren können.
diese Kriterien sollten dann alle gesucht werden.

wirklich nicht vorher schon?
Na ja, möglich wäre auch hierfür eine Lösung - aber!
Das Userform müsste total umgebaut werden.
Noch mal zur Verständigung:
Zur Zeit verwendest du COMBOboxen, keine LISTboxen!
Versuch bitte, die richtigen Bezeichnungen zu verwenden, da es sonst nur zu Missverständnissen kommen kann.
Also, das Userform müsste so umgebaut werden, dass alle 3 Comboboxen verschwinden und durch 3 Listboxen ersetzt werden - das wäre dein Job
Dann musst du in der neuen Bsp-Datei von dir ALLE verwendeten "Schlüsselwörter" für Level1-3 eintragen.
Aber nicht nebeneinander, sondern wie auch jetzt untereinander.
Ich kann dann versuchen, diese Schlüsselwörter wieder in die entsprechenden Listboxen einzulesen.
Und dann, wenn ich wieder fertig bin, kann man für jede Listbox beliebig viele Schlüsselwörter auswählen, nach denen dann die Datensätze gefiltert angezeigt werden.
Aber, hmm hmm hmm, eigentlich grenzt das ja schon fast an Auftragsprogrammierung, da hier ja ausser die Bsp-Datei alles für dich erstellt wird - und eigtl kostet so etwas Geld ;-)
Zeig mal die neue Bsp-Datei mit allen, wie oben beschrieben, erforderlichen Inhalten.
Ich will dir nix versprechen, aber wenn sich der Aufwand noch immer in Grenzen hält, schau ich mal, was ich tun kann.
Ciao
Thorsten

Anzeige
AW: an einer Bsp-Datei...
20.02.2013 09:00:58
Pascal
Schönen guten morgen lieber Oberschlumpf (Thorsten)
Natürlich ärgerte ich mich auch halb zu Tode, als ich plötzlich erfahren habe, dass mehrere Kriterien pro Level markiert werden dürfen.
Das wusste ich leider, leider auch nicht früher :-((
Natürlich möchte ich hier auch keinenfalls eine Auftrags-Programmierung erstellen lassen.
Vielmehr gehts darum, aus deinem bereits superdokumentierten Code lernen zu können.
Nun hab ich mal - wie von Dir geschrieben - die UserForm komplett umgebaut und mit Listboxen versehen.
Die Listboxen hab ich als Multiselect definiert.
Die Daten werden jetzt schon korrekt in die Listboxen eingelesen.
In den Listboxen kann ich nun also mehrere Kriterien anklicken und auswählen (Pro Level)
Jetzt müsste ich einfach eine Art Schlaufe (oder wie macht man das ?) haben, welche pro Level-Listbox alle markierten Einträge in der Datenbank sucht und ausliest.
Wäre Supernett, wenn hier jemand weiterhelfen könnte.
Anbei das neue Beispiels-File
https://www.herber.de/bbs/user/83983.zip

Anzeige
AW: an einer Bsp-Datei...
20.02.2013 09:01:14
Pascal
Schönen guten morgen lieber Oberschlumpf (Thorsten)
Natürlich ärgerte ich mich auch halb zu Tode, als ich plötzlich erfahren habe, dass mehrere Kriterien pro Level markiert werden dürfen.
Das wusste ich leider, leider auch nicht früher :-((
Natürlich möchte ich hier auch keinenfalls eine Auftrags-Programmierung erstellen lassen.
Vielmehr gehts darum, aus deinem bereits superdokumentierten Code lernen zu können.
Nun hab ich mal - wie von Dir geschrieben - die UserForm komplett umgebaut und mit Listboxen versehen.
Die Listboxen hab ich als Multiselect definiert.
Die Daten werden jetzt schon korrekt in die Listboxen eingelesen.
In den Listboxen kann ich nun also mehrere Kriterien anklicken und auswählen (Pro Level)
Jetzt müsste ich einfach eine Art Schlaufe (oder wie macht man das ?) haben, welche pro Level-Listbox alle markierten Einträge in der Datenbank sucht und ausliest.
Wäre Supernett, wenn hier jemand weiterhelfen könnte.
Anbei das neue Beispiels-File
https://www.herber.de/bbs/user/83983.zip

Anzeige
AW: an einer Bsp-Datei...
25.02.2013 09:24:27
Pascal
Hallo Oberschlumpf
Deine letzte Beispielsdatei ist ja der wahre Hammer !
Genau was ich brauch ! Vielen vielen herzlichen Dank !
Jetzt gilt es, das Ganze noch etwas auszubauen, verfeinern.
So z.B. muss ich noch eine Start-Tabelle/Registerblatt festlegen. Denn – bevor da Auswertungen gemacht werden können, muss der Benutzer natürlich aus dem Ticket-Tracking-System raus die Daten hier ins Excel auf das Tabellenblatt "Datenbank" kopieren. (geschieht manuell)
Dann braucht es irgendwo einen Button welche die UserForm dann aufruft über welche er die Auswertungen macht.
Die UserForm sollte – wenn Auswertung fertig durchgelaufen ist – wieder geschlossen werden.
Des Weiteren frage ich mich, ob ich gewisse Auswertungen die immer und immer wieder gemacht werden (also Auswertungen, bei welchen die einzelnen Levels immer wieder gleich ausgewählt werden müssten) irgendwie hinter einem Flag abrufbar hinterlegt werden können.
Beispiel:
Jede Woche muss z.B. eine Auswertung gemacht werden, bei welcher der User folgende Auswahl treffen müsste:
Level1 = crs
Level2 = crs und ww und sap ccm
Level3 = betrieb und systembetrieb und austra und ccr-ww und dienste und gts und default
Wäre es z.B. möglich diese Levels – Auswahl irgendwie zusammengefasst hinter ein Flag "Wochen-Auswertung" zu hinterlegen ? (Ziel: User klickt dann dieses Flag an und in den entsprechenden ListBoxen werden gleich die obigen Levels ausgewählt)
Ich (wir) sind auf dem richtigen Weg ! Jetzt geht’s noch ans Verfeinern
Herzlichen Dank für Deine grossartige Hilfe !
Pascal

Anzeige
AW: an einer Bsp-Datei...
25.02.2013 10:58:07
Pascal
Ich hab nun alles soweit fertigstellen können wie es sein muss.
inkl. Auswahl per Flags wie ich das oben beschrieben hatte.
Das Projekt kann somit also als abgeschlossen (Dank Deiner grossartigen und aufopferungsvollen Hilfe) betrachtet werden.
Nochmals mein ganz herzliches Dankeschön an Dich / Euch alle !

AW: an einer Bsp-Datei...
19.02.2013 06:33:58
Pascal
Hallo alle miteinander !
Mal vorab Euch allen ein herzliches Dankeschön für Eure Mithilfe und all Eure zahlreichen Lösungsvorschläge.
All die Vorschläge werde ich nun der Reihe nach mal durchtesten. Selbstverständlich post ich dann die Ergebnisse hier wieder.
Nochmals allen ein herzliches Dankeschön und ... allen kränkelnden Leuten eine rasche, schnelle, gute Besserung !
Pascal

Anzeige
AW: Datenbank-Suchfunktion nach verschiedenen Levels
19.02.2013 05:29:58
Mustafa
Hallo Pascal,
probiere mal folgenden Code für den CommandButton 2
Private Sub CommandButton2_Click()
Dim Wahl As Integer
Dim LngLetzteZeile As Long, LngZeile As Long, LngZeile2 As Long
Dim Wks1 As Worksheet, Wks2 As Worksheet
Set Wks1 = Worksheets("Datenbank")
Set Wks2 = Worksheets("Tabelle2")
LngLetzteZeile = Wks1.Cells(Wks1.Cells.Rows.Count, 1).End(xlUp).Row
If ComboBox1  "" Then Wahl = 1
If ComboBox2  "" Then Wahl = 2
If ComboBox3  "" Then Wahl = 3
Wks2.Range(Wks2.Cells(2, 1), Wks2.Cells(Wks2.Cells.Rows.Count, Wks2.Cells.Columns.Count)). _
ClearContents
Select Case Wahl
Case 1
For LngZeile = 2 To LngLetzteZeile
If Wks1.Cells(LngZeile, 8) = ComboBox1.Value Then
LngZeile2 = Wks2.Cells(Wks2.Cells.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
For LngSpalte = 1 To 10
Wks2.Cells(LngZeile2, LngSpalte) = Wks1.Cells(LngZeile, LngSpalte)
Next
End If
Next
Case 2
For LngZeile = 2 To LngLetzteZeile
If Wks1.Cells(LngZeile, 8) = ComboBox1.Value And Wks1.Cells(LngZeile, 9) = ComboBox2. _
Value Then
LngZeile2 = Wks2.Cells(Wks2.Cells.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
For LngSpalte = 1 To 10
Wks2.Cells(LngZeile2, LngSpalte) = Wks1.Cells(LngZeile, LngSpalte)
Next
End If
Next
Case 3
For LngZeile = 2 To LngLetzteZeile
If Wks1.Cells(LngZeile, 8) = ComboBox1.Value And Wks1.Cells(LngZeile, 9) = ComboBox2. _
Value And Wks1.Cells(LngZeile, 10) = ComboBox3.Value Then
LngZeile2 = Wks2.Cells(Wks2.Cells.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
For LngSpalte = 1 To 10
Wks2.Cells(LngZeile2, LngSpalte) = Wks1.Cells(LngZeile, LngSpalte)
Next
End If
Next
Case Else
End Select
UserForm1.Hide
End Sub
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.

AW: Datenbank-Suchfunktion nach verschiedenen Levels
19.02.2013 10:06:22
Pascal
auch dieser Code funzt eigentlich bestens - Vielen Dank !
Oberschlumpfs Lösung gefällt mir supergut und - aufgrund seines sauber dokumentierten Codes - kann ich damit auch sehr viel Neues lernen.
Vielen Dank !
Der Code macht eigentlich soweit genau das, was ich mir wünsche, doch kam leider bereits schon eine neue Anforderung beim Projekt hinzu:
es sollten pro Level mehrere Sachen ausgewählt werden können.
d.h. es sollten zum Beispiel gewählt werden können:
Level1 = Software und Applikation
Level2 = Windows, Office und SAP
Level3 = Verkauf und Service
Sozusagen sollte man also in den Listboxen / Comboboxen mehrere Kriterien auswählen/markieren können.
diese Kriterien sollten dann alle gesucht werden.
ginge das irgendwie noch zu ergänzen ?
Herzlichen Dank für die Tips

AW: Datenbank-Suchfunktion nach verschiedenen Levels
23.02.2013 07:48:52
Oberschlumpf
Huhu Pascal!
Uih uih uih. Zum Glück deinen Thread doch noch erreicht!
Wir haben zu lange gebraucht. Dein Thread ist mittlerweile im Archiv verschwunden.
Schau dir mal diesen Thread an:
https://www.herber.de/forum/messages/1300488.html
Und antworte dort, damit ich weiß, dass "du auch noch da bist" :-)
Ich bin mit meiner 2. Lösung fast fertig - also melde dich hofftl bitte schnell.
Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige