Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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

Matchen alphanumerischer Codes (ICD)

Matchen alphanumerischer Codes (ICD)
13.07.2020 23:15:48
Dierick
Hallo, ich habe folgendes Problem:
Ich habe eine Tabelle mit individuellen numerischen IDs und zugeordneten Fällen für jede ID. Diese Fälle sind alphanumerisch, ein Buchstabe und bis zu 4 Ziffern, die auch durch ein . oder - unterbrochen sein können (ICD codes).
Z.B. Individuum mit ID 2 hat M36 und ID 4 hat G37.3-
Ich habe eine zweite Tabelle, in der verschiedene Kliniken sind und die jeweils einen oder mehrere Bereiche von Fällen abdecken können. Z.B. kann Klinik "alpha" alle Fälle von G10 bis G20 und von G35 bis G40 und von H10 bis H11 abdecken. Ich habe jeweils eine Spalte, die die Ober- und Untergrenze enthält.
Ich möchte nun jedem Fall eine Klinik zuweisen, die ihn behandeln kann. Also zB sollte ID4 in Klinik alpha behandelt werden können, da G37.3- ja zwischen G35 und G 40 liegt. Dann soll in der Tabelle mit den Fällen in der 3. Spalte "hospitals" die jeweilige Klinik aus der Kliniktabelle stehen.
Ich vermute, dass man das mit Vergleich und Index lösen kann? Aber es sollte sowohl immer die paarweise auftretenden Unter- und Obergrenzen erkannt werden und auch, dass jeweils die ersten zwei Ziffern der Fälle ausschlaggebend sind, auch wenn noch etwas anderes dahinter kommt.
Ich habe ein Minimalbeispiel angehängt und würde mich über Hilfe freuen.
https://www.herber.de/bbs/user/139027.xlsx

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matchen alphanumerischer Codes (ICD)
13.07.2020 23:19:44
Dierick
Kleine ergänzende Info: Manche hospitals decken nur einen Case ab und haben deswegen keine Obergrenze bzw. es miscben sich einzelne Fallabdeckungen mit Bereichsabdeckungen wie bei "gamma".
AW: mit INDEX() und AGGREGAT() ...
14.07.2020 08:36:13
neopa
Hallo Dierick,
... in C2:
=WENNFEHLER(INDEX(hospitals!A:A;AGGREGAT(15;6;ZEILE(A$2:A$9)/(LINKS(hospitals!B$2:L$9;1)=LINKS(B2;1))/(TEIL(hospitals!B$2:L$9;2;2)+0&gt=TEIL(B2;2;2)+0);1));"")
und Formel nach unten ziehend kopieren.
Gruß Werner
.. , - ...
AW: mit INDEX() und AGGREGAT() ...
14.07.2020 09:17:07
Dierick
Danke,das funktioniert wie gewünscht! Wunderbar!
AW: mit INDEX() und AGGREGAT() ...
14.07.2020 10:12:33
Dierick
Oh, mir ist doch ein Problem aufgefallen.
Id 2 sollte eigentlich keine Zuordnung bekommen, da sein Case nicht zwischen den Grenzen A1 und A2, oder B1 und B2 von beta liegt.
Die Grenzen sind immer paarweise, d.h. zwischen A2 und B1 soll nicht berücksichtigt werden. Lässt sich das noch lösen?
Anzeige
AW: ist schon möglich, doch ...
14.07.2020 16:42:33
neopa
Hallo Dierick,
... in den Zusammenhang stellt sich mir jetzt die Frage und damit ich Dir, was wäre für ein "Case" z.B. I35(.1) oder M602?
Gruß Werner
.. , - ...
AW: ist schon möglich, doch ...
14.07.2020 18:00:48
Dierick
Hallo Werner, danke für die Rückmeldung. Ich habe den Datensatz jetzt so bearbeitet, dass I35.1 als I351 dargestellt wird. I351 müsste dann von der Untergrenze I35 und theoretisch auch von Obergrenze I35 erfasst werden. Zur Untergrenze "abrunden" und Obergrenze "aufrunden" bis xx99. Tatsächlich gibt es da aber im Datensatz keine Überschneidungen der Grenzen, also auf Obergrenze I35 würde Untergrenze I36 folgen. Für M602 gilt das Gleiche.
Ich habe jetzt auch alle Ober und Untergrenzen in eine Spalte gesetzt (also alle unter A1 und A2) , sodass alpha zB 3 Zeilen hat, mit den jeweiligen Grenzen. Ich hoffe, das erleichtert eine Lösung.
Anzeige
AW: so aber unklar ...
14.07.2020 19:15:05
neopa
Hallo,
... denn bisher gab es lediglich I33.4 und nicht I35.1 und ein M602 gab es auch nicht.
Stell doch mal Deine neue Datenstruktur ein. Dann schaue ich es mir morgen noch einmal an.
Gruß Werner
.. , - ...
AW: so aber unklar ...
14.07.2020 22:39:32
Dierick
Sorry für die Unklarheiten und danke für die Geduld. Habe versucht das Ganze versucht nun besser zu strukturieren, damit es klarer ist. Im Endeffekt können es nach dem Buchstaben bis zu vier Ziffern sein. Die Punkte hab ich entfernt und wenn es weniger als vier Ziffern sind, sind Minuse als Füller. Also z.B. M36-- oder M444- oder G1234.
Die hospitals habe ich so strukturiert, dass für jedes Grenzenpaar eine Zeile ist. Wenn ein hospital nur einen Case behandeln kann bzw. ist in Ober-und Untergrenze der gleiche Case. Dann ist das Problem mit mehreren Paaren pro Reihe hoffentlich gelöst.
Im angehängten Beispiel sollten ID 1 und ID 2 nun das hospital "gamma" zugeordnet bekommen. ID3 sollte alpha zugewiesen bekommen und ID4 beta. ID5 hat keine passende Zuweisung. Ich denke, so sind die wichtigen Fälle abgedeckt.
https://www.herber.de/bbs/user/139050.xlsx
Anzeige
AW: so wird es natürlich einfacher, allerdings ..
15.07.2020 11:18:49
neopa
Hallo Dierick ,
... Deine Beispieldatei ergibt dann lediglich für ID 1 ein Ergebniswert. Ist das so gewollt?
Und was bedeuten denn die nachgestellten "-" in Deiner Beispieldatei. Sind das immer "-"?
Gruß Werner
.. , - ...
AW: hierzu nun ...
16.07.2020 15:53:33
neopa
Hallo Dierick,
... da Du bisher noch nicht auf meinen Beitrag von gestern Vormittag reagiert hast bzw. es konntest, ich aber ein paar Tage nicht online sein kann, will ich Dir nachfolgende meine Formellösung für Deine neue Datenstruktur in "hospitals" aufzeigen.
Arbeitsblatt mit dem Namen 'cases'
 ABC
1idcaseassigned_hospital
21M36--gamma
32M444- 
43G1234alpha
54I301- 
65H23-- 
76H21--delta
87G45--alpha
98Z22 
10   

ZelleFormel
C2=WENNFEHLER(INDEX(hospitals!A:A;AGGREGAT(15;6;ZEILE(A$2:A$9)/(LINKS(hospitals!B$2:B$9;1)=LINKS(B2;1))/(WECHSELN(hospitals!B$2:B$9;LINKS(B2;1);0)+0=WECHSELN(WECHSELN(B2;LINKS(B2;1);0);"-";"")+0)/(WECHSELN(hospitals!C$2:C$9;LINKS(B2;1);0)+0>=WECHSELN(WECHSELN(B2;LINKS(B2;1);0);"-";"")+0);1));"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
Das geht in xl365/XL-Online jetzt auch kürzer:
17.07.2020 23:14:35
lupo1
Aus
=WENNFEHLER(INDEX(hospitals!A:A;AGGREGAT(15;6;ZEILE(A$2:A$9)/(LINKS(hospitals!B$2:B$9;1)=LINKS(B2;1))/
(WECHSELN(hospitals!B$2:B$9;LINKS(B2;1);0)+0 (WECHSELN(hospitals!C$2:C$9;LINKS(B2;1);0)+0>=WECHSELN(WECHSELN(B2;LINKS(B2;1);0);"-";"")+0);1));"")

wird dort:
=LET(
L;LINKS(B2;1);
V;WECHSELN(WECHSELN(B2;L;0);"-";"")+0;
WENNFEHLER(INDEX(hospitals!A:A;AGGREGAT(15;6;ZEILE(A$2:A$9)/(LINKS(hospitals!B$2:B$9;1)=L)/
(WECHSELN(hospitals!B$2:B$9;L;0)+0 (WECHSELN(hospitals!C$2:C$9;L;0)+0>=V);1));""))

Der "formelinterne Registerinhalt" (erinnert Ihr Euch noch an die besseren Taschenrechner?) ist endlich da!
Hier ein besonders fettes Beispiel (6 Register auf 5 Ebenen):
http://www.office-hilfe.com/support/showthread.php/33821-Entpivotisierung-dyn-Kreuztab-mittels-FILTER%28%29-SEQUENZ%28%29-und-BEREICH-VERSCHIEBEN%28%29
Anzeige
Wenn µS so weitermacht, ...
19.07.2020 02:24:51
Luc:?
…Lupo,
dürfte das EndStadium eine fml-lose Anweisungssprache sein, die bei entsprd Struktur und Symbolik (u.a. mehr Operationssymbole), weitgehend auf Fktt verzichten kann. Ich glaube mich doch richtig zu erinnern, dass Du, als ich vor ca 3 Jahren mal Bspp zeigte, kommentiertest, dass Du eigentlich nichts gänzlich Neues lernen wolltest. Und nun jubelst Du über jedes (vermeintlich) neue Körnchen, was µS uns hinstreut… ;-]
So neu sind diese Register gar nicht. Das konnte man schon seit Jahrzehnten mit benannten Fmln erledigen (oder eben wie weiland ich mit dem Dictionary-Objekt oder in einer UDF mit Static-Variablen o.ä.).
Und was die Umwandlung von Daten aus Xl-KreuzTabellen in normale Datensätze betrifft, so etwas hatte ich vor ca 19 Jahren mal in dessen eigener Sprache für QlikView pgmmiert. µS hinkt da ca 20 Jahre hinter der Entwicklung hinterher, wobei sich eine Frage stellt: Kann man in irgendeinem dieser tollen µS-ZusatzPgmm auch durch einfachen Klick (Qlik) von der KreuzTabellen- auf eine (stabile) Diagramm-Darstellung umschalten…?
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
LET hat lange gedauert ...
19.07.2020 10:27:20
lupo1
... in MOREFUNC.DLL hatte Laurent Longré die Register-Sache schon mal vor 20-25 Jahren angeboten. Nur lief MOREFUNC insgesamt nicht sonderlich stabil.
Qlik hin oder her ... Den Standard darzustellen, ist (auf Zeit, auf Ewigkeit?) halt nur MS vergönnt. Und so schlecht ist Excel ja nun nicht. Jedenfalls macht es bei weitem mehr Spaß als LO.
Xl hat eine Besonderheit, ...
19.07.2020 18:35:56
Luc:?
…Lupo,
die es von LO & Co unterscheidet und von der ich fürchte, dass sie bei den ganzen Veränderungen untergehen könnte (dazu demnächst mehr), denn immerhin wurde für die ab Xl12/2007 neuen Fktt ein neuer Kern mit spezieller Regie angelegt (darauf deuten versteckte defNamen hin).
µS hatte sich viel zu lange auf seiner MarktFührerschaft ausgeruht und sich fast nur noch mit der Adaption neuer Fktionalitäten befasst, die andere längst hatten. Weshalb dann viele potenzielle Nutzer (vor allem wohl die mit DBen) nur noch abwinkten, wenn die Rede auf µS-Office kam. In meinem Umfeld kenne ich niemanden persönlich, der für µSO pgmmiert (für anderes aber schon), nur normale Anwender.
Luc :-?
Anzeige
AW: dafür möglich aber deutlich komplizierter ...
14.07.2020 19:11:25
neopa
Hallo Dierick,
... unter der Annahme, das da wo die Leerzellen sind in G3 und C4 kein anderer Fall als M601 oder I33.4 auftreten kann.
bei aktivierter Zelle C2 definiere im Namensmanager mit den von mir willkürlich gewählten Namen: _Zw_Erg und _Erg:
_Zw_Erg: =WENNFEHLER(INDEX(hospitals!A:A;AGGREGAT(15;6;ZEILE(!A$2:A$9)/(LINKS(hospitals!B$2:L$9;1)=LINKS(!B2;1))/(TEIL(hospitals!B$2:L$9;2;2)+0&gt=TEIL(!B2;2;2)+0);1));"")
und
_Erg: =WENN(!B2="";"";WENN(ZÄHLENWENN(INDEX(hospitals!A:L;VERGLEICH(_Zw_Erg;hospitals!A:A;0););"*"&TEIL(!B2;2;2)&"*");_Zw_Erg;WENN(REST(AGGREGAT(14;6;SPALTE(!A2:L2)/(LINKS(hospitals!B$2:L$9;1)=LINKS(!B2;1))/(TEIL(INDEX(hospitals!A:L;VERGLEICH(_Zw_Erg;hospitals!A:A;0););2;2)+0&lt=TEIL(!B2;2;2)+0)/(INDEX(hospitals!A:L;VERGLEICH(_Zw_Erg;hospitals!A:A;0);)"");1);2)=0;_Zw_Erg;"?")))
Danach in C2 folgende Zellformel ein: =_Erg
und kopiere diese ziehend nach unten.
Gruß Werner
.. , - ...
Anzeige
Das ist doch alles Murks
15.07.2020 15:01:02
lupo1
Cases!C2: =SVERWEIS(B2;hospitals!A$7:C$22;3)
mit
hospitals!A$7:C$22:
G10 A1 alpha
G20 A2 alpha
usw.

Was soll immer dieses Kreuztabellen-Rumgehampel? Es gibt keinen einzigen Grund dafür.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige