Hallo Jörg,
Möchte aber die Formel nicht Ohne ISTNV.
Da muss ich dich ernsthaft Fragen: Warum?
Code: Alles auswählen
=WENN(ISTNV(SVERWEIS($E$8;Patientendatei.$A$2:$J$5000;VERGLEICH($C9;Patientendatei.$A$1:$J$1;0);0));"";SVERWEIS($E$8;Patientendatei.$A$2:$J$5000;VERGLEICH($C9;Patientendatei.$A$1:$J$1;0);0))
Diese deine Formel ausm Tabellenblatt *Eingabemaske Kunden*, macht dir das Leben nur unnötig schwer.
Und willst Du auch wissen warum?
[...]
Nun gut, ich sags dir.
Weil Du damit Calc jedesmal extrem viel Rechenleistung abverlangst. Denn die Rückgabe-SVERWEIS benutzt Du auch als Such-SVERWEIS, was dir zum verhängniss wird.
Es läuft, aber etwas ruckelig. D.h. die Wechsel zwischen den Tabellenblättern sind "erkennbar". Ließe sich das optimieren?
Und dazu trägt deine Formel mit bei. Ich weiß nicht um wieviel sich das bemerkbar macht, aber mit einer angepassten Formel erleichterst Du dir das Leben da die Formel übersichtlicher wird, und Calc muss sich nicht so quälen.
Ich habe irgendwie das Gefühl das dir mal gar nicht so wirkllich bewusst ist wie SVERWEIS arbeitet. Und deshalb mal wieder diesbezüglich ein kleiner Crash-Kurs von mir.
SVERWEIS hat 4 Parameter, die Du ja auch alle ordentlich belegt hast. Manche schenken sich gerne den 4. Parameter und wundern sich dann warum sie nicht das gewünschte Ergebnis bekommen. Das aber nur so am Rande.
Der 1. Parameter ist der Suchbegriff, der im 2. Parameter, der Datenmatrix in der 1. Spalte der Datenmatrix, gesucht wird.
Lass das mal auf dich einen kurzen moment einwirken.
[...]
Wenn SVERWEIS den Suchbegriff in der ersten Spalte der Datenmatrix gefunden hat, geht es weiter mit dem 3. Parameter, der die Spalte der Datenmatrix angibt aus dem ein Wert oder ähnliches zurückgegeben werden soll. So weit klar und verständlich. Oder etwa nicht!?
Was aber passiert, wenn der Suchbegriff in der ersten Spalte der Datenmatrix nicht gefunden wird?
[...]
Ganz einfach!
Es kommt zur Fehlermeldung.
Und diese fängst Du mit ISTNV ab.
Du setzt also nicht nur die Rückgabe-SVERWEIS als Such-SVERWEIS ein, nein (!) Du packst diese noch zusätzlich in eine weitere Funktion [ISTNV()] ein. Das ist schon kompliziert genug, und da muss was gegen unternommen werden. Und da gibts auch eine ganz einfache Lösung, die sich wahrlich schon mehrfach bewährt hat. Und diese Lösung heißt ZÄHLENWENN.
Ich zeige dir das mal an der oben zitierten Formel wie das dann aussieht.
Code: Alles auswählen
=WENN(ZÄHLENWENN(Patientendatei.$A$2:$A$500;$E$8);SVERWEIS($E$8;Patientendatei.$A$2:$J$5000;VERGLEICH($C9;Patientendatei.$A$1:$J$1;0);0));"")
Mehr braucht es nicht.
Schau dir die Formel mal ganz genau in Ruhe an.
Und wie arbeitet ZÄHLENWENN?
Ganz einfach!
Es wird in einer Spalte (oder einer Zeile) nach einem Begriff gesucht. Und wenn er gefunden wurde, gibt ZÄHLENWENN eine 1 zurück. Sollte der Begriff aber mehrfach vorhanden sein, dann wird die Anzahl der übereinstimmungen zurückgegeben, z.B. 3. Wir können ja wohl davon ausgehen das es keine doppelten oder mehrfachen Patientennummern gibt, oder!?
Da aber der Wert 1 von der ZÄHLENWENN in der WENN(...) auch als Wahrheitswert WAHR (oder Logisch 1) interpretiert wird, geht es mit dem DANN-Teil der Formel weiter, also mit der SVERWEIS.
Und jetzt überleg noch mal was ich anfangs zu der SVERWEIS bezüglich suchen gesagt habe. Dann müsstest Du wohl den Sinn der Formelumstellung verstehen.
Die Schaltfläche "Kunden anzeigen" gibt mir einen schon vorhandenen Kunden zurück.
Bei diesem will ich die Stammdaten wie Adresse o.ä. ändern und diese Änderungen mit der Schaltfläche "Änderungen speichern" speichern, so daß praktisch die alten Zellinhalte überschrieben werden.
Na ja und dazu bräuchte ich ein kleines Makro. Bitte.
Tja, und spätestens ab hier heißt es für dich "Programmieren lernen, und nich einfach alles aufzeichnen, weil man eben nicht alles aufzeichnen kann!"
Du kennst ja schon Dannenhöfer, also schau doch da mal rein. Ich habe auch schon für dich die ersten wichtigen Themen rausgesucht.
7.1.1 Wie bekomme ich Zugriff zu einer Zelle?
7.1.4 Wie kann man den Inhalt von Zellen löschen?
7.1.10 Wie kann man Werte einer Zelle lesen und schreiben?1
Und natürlich die übergeordnete Seite:
7.1 Zellen
Und wenn Du das schon mal verstanden und in einer Beispieldatei umgesetzt hast, unterhalten wir uns weiter über das Thema "For ... next". Das kann auch noch zur Optimierung beitragen, da dadurch einige Abläufe verbessert (vereinfacht) werden können.
Gruß
balu