Daub Logo
Produkte Downloads Kaufen Company Community mein Daubnet
Anmelden

Community

Diskussionen, Fragen und Zusammenarbeit - hier ist der richtige Platz für den Austausch mit den Entwicklern und mit anderen Usern. Machen Sie mit!
Kostenloses Daubnet-Konto erstellen

Ages! Forum Rechenfelder Formel um Ortsstring zu zerlegen  


 

Formel um Ortsstring zu zerlegen

 
 
 
Beitrag4. Mai 2009, 10:54
Hallo Listenleser,

ich bin mit Formeln nicht so fit und komme nicht weiter.

Ich habe meine Orte nach folgender Syntax erfaßt:

Hauptort, Ortsteil, Bundesland

1. Beispiel: Berlin, OT Spandau, Sachsen (bei Orten mit Ortsteilen)
2. Bespiel: Stollberg, OT Brünlos, Sachsen (bei Orten mit eingemeindeten, früher eigenständigen Dörfern)

Wenn es keinen Ortsteil gibt oder es sich um den Hauptort handelt, steht dann im Ortsfeld nur:
3. Beispiel: Adorf, Sachsen
4. Beispiel: Stollberg, Sachsen

Ich möchte nun, dass im Diagramm:
1.) nur der Ortsteilname ausgegeben wird, falls dieser existiert
2.) sonst nur der Hauptort angegeben wird

1. Beispiel -> Spandau
2.)Beispiel -> Brünlos
3.)Beispiel -> Adorf
4. Beispiel -> Stollberg

Herzlichen Dank für Eure Hilfe

TM
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag4. Mai 2009, 18:52
Das wird leider etwas komplizierter.

Grundsätzlich gibt es hier zwei Fälle: Orte mit ", OT ", und solche ohne.

=FIND(", OT ",BIRT.LOCATION)

gibt die Position des Textes ", OT " im Ort zurück. Wenn er nicht darin vorkommt, ist der Wert 0. Dies lässt sich jetzt in eine Bedingung einbauen:

=IF(HatOrtsteil,Ortsteilformel,Ortsformel)

Die Formel, um einen Ort bis zum ersten Komma einzukürzen hatten wir schon einmal hier. Damit Orte, die kein Komma enthalten in Gänze ausgegeben werden, würde ich hierfür engegen meiner letzten Version folgende Formel verwenden:

Code: Alles auswählen
=IF(FIND(",",BIRT.LOCATION),LEFT(BIRT.LOCATION,FIND(",",BIRT.LOCATION)-1),BIRT.LOCATION)


Den Ortsteil aus dem Feld herauszuziehen ist nicht ganz so einfach, zumal dort auch bis zum ersten Komma nach dem "OT" eingekürzt werden soll, sofern ein Komma folgt.

Code: Alles auswählen
=MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,IF(FIND(",",MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,255))=0,255,FIND(",",MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,255))-1))


Ages! hat eine Maximallänge für Formeln, weshalb ich Ihre Aufgabe in zwei Teile auftrenne. Das erste Rechenfeld zeigt nur dann etwas an, wenn nicht das Wort "OT" im Ort vorkommt:

Code: Alles auswählen
=IF(FIND(", OT ",BIRT.LOCATION)>0,"",IF(FIND(",",BIRT.LOCATION),LEFT(BIRT.LOCATION,FIND(",",BIRT.LOCATION)-1),BIRT.LOCATION))


Das zweite Rechenfeld zeigt nur dann etwas an, wenn das Wort "OT" im Ortsfeld vorkommt:

Code: Alles auswählen
=IF(FIND(", OT ",BIRT.LOCATION)>0,MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,IF(FIND(",",MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,255))=0,255,FIND(",",MID(BIRT.LOCATION,FIND(", OT ",BIRT.LOCATION)+5,255))-1)),"")


Für Ihr Diagramm benötigen Sie demnach zwei Rechenfelder. Kleiner Nebeneffekt: Sie können Ortsnamen und Ortsteilnamen so getrennt voneinander formatierten.
Site Admin
jcd
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag5. Mai 2009, 07:37
Ganz herzlichen Dank für Ihre umfangreiche Hilfestellung !

TM
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag3. Jun 2009, 18:17
Meine Ortsangaben setzen sich zusammen aus Ort, Kirchspiel, Kreis, Regierungsbezirk und Land, jeweils getrennt durch Kommata ohne Leerzeichen.
Deshalb die Frage:
Kann ich Ortsnamen auch bis zum 2. oder 3. Komma selektieren?
Oder muß ich verschiedene Satzzeichen verwenden um nach den einzelnen Angaben zu selektieren? Z.B. Schrägstrich, Komma, Punkt, Bindestrich, Semikolon und Leerzeichen. Wäre das dann noch gedcom-Standard?
Was muß bei den anderen Feldern mit Ortsangaben eingegeben werden, z.B. bei Taufe, Tod usw. um das gleiche zu erreichen?
Gruß Rudolf
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag3. Jun 2009, 22:24
Hallo Rudolf!
Ich setze ebenfalls meine Ortsangaben aus mehreren Elementen zusammen.
Habe mir mal die Mühe gemacht diese Strings zu zerlegen. Ich benutze die Angaben derzeit nur bei der Ortsliste, wo ich fix mit einer Ortsangabe rechne. In anderen Vorlagen kann es sein, dass die Berechnungsfelder nicht korrekt arbeiten, wenn kein Ort eingegeben ist. Außerdem muss NAME durch das entsprechende Feld ersetzt werden.

1. Element
Code: Alles auswählen
=LEFT(NAME,FIND(",",NAME,1)-1)

2. Element
Code: Alles auswählen
=MID(NAME, SEARCH(".", SUBSTITUTE(NAME,", ",".",1))+2, SEARCH(".",SUBSTITUTE(NAME,", ",".",2))-SEARCH(".",SUBSTITUTE(NAME,", ",".",1))-2)

3. Element
Code: Alles auswählen
=MID(NAME, SEARCH(".", SUBSTITUTE(NAME,", ",".",2))+2, SEARCH(".",SUBSTITUTE(NAME,", ",".",3))-SEARCH(".",SUBSTITUTE(NAME,", ",".",2))-2)

4. Element
Code: Alles auswählen
=MID(NAME, SEARCH(".", SUBSTITUTE(NAME,", ",".",3))+2, SEARCH(".",SUBSTITUTE(NAME,", ",".",4))-SEARCH(".",SUBSTITUTE(NAME,", ",".",3))-2)

letztes Element
Code: Alles auswählen
=RIGHT(SUBSTITUTE(SUBSTITUTE(NAME,",","",1),",","",1)&",", LEN(NAME)-(SEARCH(",",SUBSTITUTE(SUBSTITUTE(NAME,",","",1),",","",1),1)+3))


Für Interessierte noch eine kurze Erklärung zur Funktion:
Erstes und letztes Element müssen gesondert ermittelt werden. Für die restlichen Elemente ersetze ich vor bzw. nach dem gesuchten Element das Komma durch einen Punkt. Somit kann ich Anfang und Ende des gesuchten Element mittels SEARCH-Funktion herausfinden und mit der MID-Funktion ausschneiden.
Die Formel (auch wenn sie lang ist) hat den Vorteil, dass sie für jedes Element gleich aufgebaut ist. Es kann so also eine beliebig lange Auflistung 'zerlegt' werden. Lediglich der Index in SUBSTITUTE(...) muss um 1 erhöht werden.
Vermutlich kann die Formel noch optimiert werden. jcd hat dazu bestimmt eine Verbesserung im Ärmel.

lg aus Österreich
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag4. Jun 2009, 17:26
Traditionell werden Kommata für die Trennung der Hierarchieebenen genutzt, der GEDCOM-Standard erwähnt dies auch an einer Stelle. Grundsätzlich ist es aber jedem freigestellt, was er in das Ortsfeld schreibt.

Die Felder für die Standardereignisse heißen:
BIRT.LOCATION für den Geburtsort
CHR.LOCATION für den Taufort
DEAT.LOCATION für den Sterbeort
BURI.LOCATION für den Bestattunsort

sowie MARR.LOCATION für den Ort der Hochzeit (funktioniert nur in Partnerschaftsrahmen)

Die Idee, die SUBSTITUTE() Funktion zu nutzen ist klasse. Im Gegensatz zu FIND() und SEARCH() kann SUBSTITUTE() nämlich das x-te Element ansprechen. (nebenbei: FIND() und SEARCH() machen das gleiche, SEARCH() ignoriert jedoch Groß- und Kleinschreibung, FIND() betrachtet "A" und "a" als ungleich, in beiden Fällen kann der dritte Parameter weggelassen werden)

Nicht so glücklich ist die Wahl des Punktes als Ersetzung, da im Ortsnamen auch Punkte vorkommen können. Daher würde ich eher folgende Teilformel verwenden:
SUBSTITUTE(BIRT.LOCATION, ",", "$",3) ersetzt beispielsweise das dritte Komma des Geburtsortes durch ein Dollarzeichen. Ich würde hier auch auf die Ersetzung des Leerzeichens verzichten, da man dies evtl. vergisst einzugeben oder unterschiedliche Daten vorliegen hat. Zur Not kann man übriggebliebene Leerzeichen mit TRIM() entfernen.

Folgender Code liefert alles bis zum dritten Komma:

Code: Alles auswählen
=LEFT(BIRT.LOCATION,FIND("$",SUBSTITUTE(BIRT.LOCATION, ",", "$",3))-1)


Genauer gesagt, ersetzt die Formel das dritte Komma im Geburtsort durch ein Dollarzeichen, und liefert dann alles bis zum Dollarzeichen. Um die Anzahl der Kommata zu verändern ersetzen Sie die 3 durch eine andere Zahl.
Site Admin
jcd
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag4. Jun 2009, 19:19
Danke jcd,funktioniert prima.
Nachfrage: Wie heißen die Felder für Wohnort, Beruf und Konfirmation?
Was gibt man zweckmäßigerweise ein wenn ein Teil der Bezeichnung fehlt, z. B. der Kreis an 3. Stelle (besonders im Ausland, damit die Ortsangaben in andere Programme in die richtigen Felder geschrieben werden (falls diese getrennt sind)?
Gruß Rudolf
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag4. Jun 2009, 19:24
Vielen Dank genial für Deine umfassende Antwort.
Dein Anstoß hat zu einer guten praktikablen Anwendung geführt.
Es grüßt Rudolf
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag5. Jun 2009, 11:19
Die drei weiteren Objekte heißen:

RESI - Wohnort
OCCU - Beruf
CONF - Konfirmation

natürlich dann entsprechend mit .LOCATION, um den Ort zu erhalten, also RESI.LOCATION für den Wohnort.
Site Admin
jcd
 
 
 

Re: Formel um Ortsstring zu zerlegen

Beitrag12. Jun 2009, 18:39
Hallo in die Liste,
Ich habe noch ein Problem mit dem Personenstammblatt. Möchte mithilfe von "Lebenslauf > Alle Ereignisse" die erfassten Daten inklusive Ortsangaben darstellen.
Leider gibt es in diesem Element kein Feld [Benutzerdefiniert]. In allen anderen Elementen ist dieses Feld enthalten, auch in den Auflistungen wie z.B. "Wohnorte (alle), Berufe (alle)".
Der Versuch mit "EVENTS[ALL].LOCATION" zu arbeiten ist leider gescheitert. Liefert nur eine einzige Ortsangabe und nicht alle Orte zu den Ereignissen.
Mir kommt zwar vor, das Problem wurde schon mal behandelt, finde aber das Posting nicht mehr.

Was mache ich falsch?
Danke im Voraus für Rückmeldungen

lg