Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

nächsten gleichartigen Eintrag finden und anzeigen

Forumthread: nächsten gleichartigen Eintrag finden und anzeigen

nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 16:46:34
Ecki
Liebe Excel-VBA-Profis

Darf ich Euch um Hilfe bei folgendem Problem bitten?
Ich habe eine Patientendatenbank mit tausenden Einträgen, wobei jeder einzelne Fall in einer Zeile abgespeichert wird. Es kann vorkommen, dass die selben Patienten mehrere Fälle haben und daher mehrfach in der Datenbank auftauchen - also unterschiedliche und weit voneinander entfernte Zeilen.

Wenn ich nach einem Eintrag suche (akt_Pat), dann schreibe ich den Namen (Name Vorname, Geb.Dat) in einer UserForm in eine ComboBox, die in der RowSource Archiv!A2:A10000 sucht. Das klappt super und bei Enter wird die Userform gefüllt:

Dim akt_Pat As String, Eintrittsdatum As Date, FID As String, Zuweisung As String, Versicherung As String, Beruf As String, AUF As Integer, EndeAUF As Date

Dim Diagnose As String, Therapie As String, Procedere As String, HA As String, Weiterbehandler As String, NF_Doc As String
Dim Str As String, PLZ As String, Ort As String, GebDat As Date, Age As String
Dim RA As String, LA As String, ml As String, AndereAnalgetika As String, NRS As Integer


Dim Listenanzeige_Archiv As Range, raPatFund As Range

akt_Pat = ComboBox1.Value

Sheets("Archiv").Activate

With Worksheets("Archiv").Range("A:A")
Set raPatFund = .Find(what:=akt_Pat, LookIn:=xlValues, LookAt:=xlPart)
If Not raPatFund Is Nothing Then
raPatFund.Activate

Versicherung = raPatFund.Offset(0, 1)
FID = raPatFund.Offset(0, 3)
Eintrittsdatum = raPatFund.Offset(0, 4)
Diagnose = raPatFund.Offset(0, 5)
Therapie = raPatFund.Offset(0, 6)
RA = raPatFund.Offset(0, 7)
NRS = raPatFund.Offset(0, 9)
LA = raPatFund.Offset(0, 10)
AndereAnalgetika = raPatFund.Offset(0, 8)
Weiterbehandler = raPatFund.Offset(0, 11)
Procedere = raPatFund.Offset(0, 12)
GebDat = raPatFund.Offset(0, 13)
HA = raPatFund.Offset(0, 14)
ml = raPatFund.Offset(0, 23)
Beruf = raPatFund.Offset(0, 18)
AUF = raPatFund.Offset(0, 19)
EndeAUF = raPatFund.Offset(0, 20)
Str = raPatFund.Offset(0, 15)
PLZ = raPatFund.Offset(0, 16)
Ort = raPatFund.Offset(0, 17)
NF_Doc = raPatFund.Offset(0, 22)
Age = raPatFund.Offset(0, 25)

'usw, usw

TextBox1.Value = Diagnose
TextBox2.Value = Therapie
TextBox3.Value = Procedere
TextBox13.Value = Beruf
TextBox14.Value = AUF
TextBox15.Value = EndeAUF
TextBox17.Value = NRS
Label1.Caption = "Eintritt: " & Eintrittsdatum
Label26.Caption = Str & ", " & PLZ & " " & Ort
Label30.Caption = "FID: " & FID
Label33.Caption = Age
ComboBox4.Value = LA
TextBox16.Value = ml
TextBox10.Value = AndereAnalgetika
ComboBox5.Value = NF_Doc
ComboBox6.Value = Weiterbehandler
ComboBox7.Value = HA

'usw, usw

End If
End With
End Sub


Jetzt mein Problem: es wird natürlich immer nur der erste Fall angezeigt. Wie bekomme ich den nächsten Fall des selben Patienten in die Form geladen?

Ich wäre sehr froh, wenn mir jemand einen Hinweis geben könnte.
Allen ein schönes Wochenende.
LG von Ecki
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA?
01.03.2025 17:02:54
RPP63
Moin!
Warum überhaupt VBA?
Deine Suchzelle ist ein Zelldropdown mit SORTIEREN(WEGLASSEN(EINDEUTIG(A2:A1000)))
Der Rest mittels FILTER()
 ABCDEFGHIJKL
1Nameegal1egal2egal3 NameCegal1egal2egal3 A
2A983368331  C104508211 B
3B894846313  C206310344 C
4B430470358  C645777353 D
5E608280760       E
6C104508211        
7E953288162        
8E812260949        
9B282435623        
10E230599511        
11B658946531        
12A221660686        
13A338632207        
14D184907743        
15E629330661        
16B287942569        
17B177699643        
18C206310344        
19A178887975        
20E436845428        
21C645777353        

ZelleFormel
L1=SORTIEREN(WEGLASSEN(EINDEUTIG(A2:A1000);-1))
G2=FILTER(A2:D1000;A2:A1000=G1)

ZelleGültigkeitstypOperatorWert1Wert2
G1Liste =$L$1# 


Du kannst natürlich auch den Autofilter nehmen.
Warum Userform?

Gruß Ralf
Anzeige
AW: VBA?
01.03.2025 17:22:59
Ecki
Hallo Ralf
Vielen Dank für den Hinweis.
Eine Form und VBA benötige ich, weil die Zeile zu lang ist, um damit zu arbeiten und ich mit den herausgefilterten Daten in der Form weiterarbeite.
LG von Ecki
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 17:08:13
daniel
Hi

Du kannst da folgendes Programmieren:
1. Richte den Autofilter ein und filtere die Liste nach dem gesuchten Patienten
2. Kopiere die gefilterten Zeilen in ein freies Tabellenblatt (beim Kopieren in gefilterten Listen übernimmt Excel nur die sichtbaren Zeilen)
3. Jetzt hast du eine Liste, die nur die Daten des gesuchten Patienten enthält und die du daher einfach von Anfang bis Ende durchschleifen kannst

In deiner Excelversion kannst du die Funktionalität des Autofilters auch durch die Funktion FILTER ersetzen.
Diese kannst du einmalig von Hand einrichten, dann muss dein Makro nicht mehr den Autofilter und das Kopieren ausführen, sondern nur noch die Patientendaten (Name, Geb-Datum) in die Zellen schreiben, die die Filter-Formel verwendet.

Gruß Daniel
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 18:49:04
Marc
also
a) sieht das nicht nach einer Datenbank aus, sondern einfach nur nach einer Tabelle
b) musst du in einer ComboBox dann Werte mit "additem" hinzufügen ... denn sonst schreibt er nur den Wert einmal als Value rein... und überschreibt den bei Bedarf. Das Value ist nur das, was kwasi der Aktuelle Wert ist, und nicht was der ComboBox an möglichen Werten hinterlegt werden soll





ComboBox4.AddItem LA
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 19:15:20
Ecki
Liebe Alle
Sorry - war nur kurz Sport machen, daher habe ich nicht antworten können.
Vielen lieben Dank für Eure Antworten - ich denke, ich habe damit eine Lösung gefunden.
LG von Ecki
Warum noch offen?
02.03.2025 00:04:33
Onur
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 17:30:33
Ecki
Hallo Daniel

Herzlichen Dank - aber ich befinde mich in der Form und wollte dort weiter arbeiten, also nicht den Filter verwenden. Eigentlich wollte ich auf einen Button klicken und VBA sucht ab der gefundenen raPatFund-Zelle nach unten weiter.

LG von Ecki
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 17:37:46
RPP63
Irgendetwas muss ja mit den evtl. geänderten Daten passieren.
Folglich brauchst Du einen Primärschlüssel (wegen Mehrfachtreffern).
I. d. R. ist dies eine fortlaufende Nummer.
Von diesem habe ich bisher nichts gelesen.

Anyway:
Sowohl Daniel als auch ich empfehlen das Filtern in einem (ausgeblendeten?) Blatt.
Auf dieses kannst Du dann programmatisch zugreifen.

Aber wie so häufig:
Ohne Beispieldatei kann es hier nur allgemeine Tipps geben.

Gruß Ralf
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 17:47:57
Ecki
Hallo Ralf
Hallo Daniel

Nochmals herzlichen Dank.
Ja, das mit dem Filtern hatte im Tabellenblatt ich verstanden. Das Auffinden der Patienten in der DB ist ja auch kein Problem, wenn ich nur die Tabelle vor mir habe. Aber ich arbeite ausschliesslich über UserForms und in denen befinden sich dann Buttons zum Verschicken von Physiotherapie-Anforderungen, Arbeitsunfähigkeiten, Rezepten usw. Ist also so etwas Ähnliches wie eine Elektronische-"Standalone"-Krankengeschichte. Daher möchte ich die UserForm, in der ich den Fall suche, nicht verlassen.

Vielen Dank trotzdem für die Hilfe.

Liebe Grüsse von Ecki
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 18:23:55
Oberschlumpf
Hi,

welchen Grund hat es, dass du den Beitrag weiterhin als nicht beantwortet ("offen") markierst?
Eigtl wollt ich dir auch vorschlagen, bau in dein Userform eine Listbox ein, lass alle gleichnamigen Treffer in der Listbox sammeln, wähle dann den Wunschfall in der Listbox aus.

Aber Listbox-Idee kam schon von Tom, für dich war das hilfreich, du hast dich bei ihm bedankt - wieso ist der Beitrag jetzt noch offen?

Ciao
Thorsten
Anzeige
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 17:43:23
Crazy Tom
moin,

wenn schon mit VBA dann nutze doch FindNext
oder lass dir alle Funde vom Patienten in einer Listbox anzeigen

mfg Tom
AW: nächsten gleichartigen Eintrag finden und anzeigen
01.03.2025 18:49:20
Daniel
Andere Möglichkeit:

Sortiere die Liste doch vorher nach Patientennamen und Datum.

Dann kannst du ausgehend von der ersten Fundstelle in die nächste Zeile gehen und das solange wiederholen, bis sich der Name ändert.
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige