mir liegen in der Zelle D2 geographische Koordinaten als Text in folgender Form vor:
8°43'22,02"; 49°8'5,49"
Hieraus möchte ich zwei Werte extrahieren: die geogr. Länge in Dezimalgrad (8.7227833333°) und entsprechend die geographische Breite (49.134858333°). Dies habe ich gelöst mit den Formeln
Code: Alles auswählen
=WECHSELN(TEXT(WERT(TEIL(TEIL(D2;1;FINDEN(";";D2;1)-1);1;FINDEN("°";TEIL(D2;1;FINDEN(";";D2;1)-1);1)-1))+WERT(TEIL(TEIL(D2;1;FINDEN(";";D2;1)-1);FINDEN("°";TEIL(D2;1;FINDEN(";";D2;1)-1);1)+1;FINDEN("'";TEIL(D2;1;FINDEN(";";D2;1)-1);1)-FINDEN("°";TEIL(D2;1;FINDEN(";";D2;1)-1);1)-1))/60+WERT(TEIL(TEIL(D2;1;FINDEN(";";D2;1)-1);FINDEN("'";TEIL(D2;1;FINDEN(";";D2;1)-1);1)+1;FINDEN("""";TEIL(D2;1;FINDEN(";";D2;1)-1);1)-FINDEN("'";TEIL(D2;1;FINDEN(";";D2;1)-1);1)-1))/3600;"Standard");",";".")
Code: Alles auswählen
=WECHSELN(TEXT(WERT(TEIL(TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1;FINDEN("°";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)-1))+WERT(TEIL(TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));FINDEN("°";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)+1;FINDEN("'";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)-FINDEN("°";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)-1))/60+WERT(TEIL(TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));FINDEN("'";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)+1;FINDEN("""";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)-FINDEN("'";TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1));1)-1))/3600;"Standard");",";".")
Um es dennoch etwas zu kürzen, schwebt mir vor, den Kern (die Koordinatenumwandlung) als eigene Funktion in meinem CALC verfügbar zu haben, so dass ich in der Zelle nur noch eingeben müsste:
Code: Alles auswählen
=Koordinatenumwandlung (TEIL(D2;1;FINDEN(";";D2;1)-1))
Code: Alles auswählen
=Koordinatenumwandlung (TEIL(D2;1+FINDEN(" ";D2;1);LÄNGE(D2)-FINDEN(" ";D2;1)))

In Excel würde ich die Funktion Koordinatenumwandlung über die Lambda-Funktion definieren - die gibt es aber in Calc nach meinem Kenntnisstand nicht. Wie kann ich das stattdessen in CALC machen? Wie wäre das z.B. in LibreOfficeBasic als Funktion zu programmieren?
Raffnix