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

Geht meine Formel auch einfacher...

Forumthread: Geht meine Formel auch einfacher...

Geht meine Formel auch einfacher...
22.07.2024 20:08:44
Christian
Hallo,

ich habe lange, ok, 10 Minuten an den Formeln in Spalte C und D gebastelt, mit dem Ziel die beiden Koordinaten, welche im Text in Spalte B stecken, auszugeben und in eine Zahl umzuwandeln.

Aber ich will ja dazu lernen, gibt es da auch einfachere Formellösungen?

Danke
Christian

https://www.herber.de/bbs/user/171176.xlsx
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geht meine Formel auch einfacher...
23.07.2024 09:25:00
daniel
Hi

Probier mal das in einer Zelle.
Mit dieser einen Formel Holst du beide Zahlenwerte in einem Schritt:

=LET(a;--WECHSELN(TEXTTEILEN(B1;{"@";","});".";",");FILTER(a; ISTZAHL(a)))

Gruß Daniel
Anzeige
oh je
22.07.2024 20:44:41
Christian
Hallo Onur,

erstmal vielen Dank, du hast meine Frage beantwortet.
Ich versuche erstmal selber herauszufinden, wie diese Formel funktioniert. Im Moment stehe ich noch ziemlich auf dem Schlauch

Gruß
Christian
ok, ich versuche es mal zu erklären...
22.07.2024 21:02:23
Christian
ich mache es mal von innen nach außen

TEXTNACH($B$1;"@") gibt den Text nach dem 1. @ aus

TEXTVOR(...;"z/d") beschränkt es auf den Teil bis zum ersten "z/d"

TEXTTEILEN(...; ",") teilt den Text in 3 Bereiche auf, durch die 2 Kommas getrennt

ZAHLENWERT(...;".") macht eine Zahl daraus und ersetzt Punkt durch Komma

WEGLASSEN(...;-1) sorgt dafür, dass der Teil nach dem 2. Komma nicht ausgegeben wird.

Und das Ganze ist dann eine Formel, hab die Bezeichnung jetzt vergessen, die automatisch in Spalte D übertragen wird.

Aber jetzt mal vorausgesetzt ich habe die Formel richtig verstanden, würde das ja bedeuten, dass meine Formel auch dann funktioniert, wenn kein z/d im weiteren Text vorkommt und deine nicht.

Aber das spielt keine Rolle, alle meine Texte beinhalten das z/d.

Würde mich jedenfalls freuen, wenn du mir Rückmeldung gibst, ob ich die Formel richtig verstanden habe.

Anzeige
AW: ok, ich versuche es mal zu erklären...
22.07.2024 21:36:17
Onur
Perfekt erklärt!
"z/d" musste ich nehmen, da ich ja irgend einen Anker brauchte - und ich hoffte, dass das in jedem Text nach den Koordinaten kommt.
Und der Ausdruck, auf den du nicht kamst, ist Array- bzw Spill-Formel.
AW: ok, ich versuche es mal zu erklären...
22.07.2024 21:43:04
Onur
Auf "WEGLASSEN" kann man aber auch verzichten:
=ZAHLENWERT(TEXTTEILEN(TEXTVOR(TEXTNACH($B$1;"@");",";2);",");".")
Anzeige
AW: ok, ich versuche es mal zu erklären...
22.07.2024 22:01:25
Christian
also wenn ich richtig verstehe hast du nicht nur die WEGLASSEN Formel weggelassen sondern auch gesagt, statt vor "Z/d" vor dem zweiten Komma.
AW: ok, ich versuche es mal zu erklären...
22.07.2024 22:03:56
Onur
Jo - auf das 2. Komma kann man sich wohl verlassen.
AW: ok, ich versuche es mal zu erklären...
22.07.2024 22:06:49
Christian
das denke ich auch.

Danke jedenfalls für deine Mühe und noch einen schönen Abend
Anzeige
Gerne !
22.07.2024 22:07:19
Onur
AW: Gerne !
23.07.2024 08:39:46
Christian
Hallo onur, ich habe doch nochmal eine Frage, woher wusste die Formel eigentlich, dass die beiden koordinaten nebeneinander stehen sollen? Theoretisch hätte ich ja auch bevorzugen können, dass sie untereinander stehen.
AW: Gerne !
23.07.2024 11:00:18
Onur
Dann einfach ein MTRANS() drumherum.
Anzeige
AW: Gerne !
23.07.2024 11:11:13
daniel
Hi

das legt man mit TEXTTEILEN fest.
dieses hat die Parameter: Text; Spaltentrennzeichen; Zeilentrennzeichen
je nachdem ob man den Text in Zeilen oder Spalten haben will, gibt man das jeweilige Trennzeichen an und lässt das andere weg

dh mit Spaltentrenner ergibt TextTeilen("a-b-c";"-") dann a | b | c
mit Zeilentrenner ergibt TextTeilen("a-b-c";;"-") dann
a
b
c

beachte das Doppelsemikolon, da der zweite Parameter dann leer ist und der dritte angegeben wird.

in deinem Fall dann so, : =ZAHLENWERT(TEXTTEILEN(TEXTVOR(TEXTNACH($B$1;"@");",";2);;",");".")

natürlich geht auch das von Onur angesprochene Mtrans: =MTRANS(ZAHLENWERT(TEXTTEILEN(TEXTVOR(TEXTNACH($B$1;"@");",";2);;",");"."))
aber man kann sich die zusätzliche Funktion auch sparen, da TextTeilen in Zeilen und in Spalten zerlegen kann.

Gruß Daniel
Anzeige
AW: Gerne !
23.07.2024 11:11:29
daniel
Hi

das legt man mit TEXTTEILEN fest.
dieses hat die Parameter: Text; Spaltentrennzeichen; Zeilentrennzeichen
je nachdem ob man den Text in Zeilen oder Spalten haben will, gibt man das jeweilige Trennzeichen an und lässt das andere weg

dh mit Spaltentrenner ergibt TextTeilen("a-b-c";"-") dann a | b | c
mit Zeilentrenner ergibt TextTeilen("a-b-c";;"-") dann
a
b
c

beachte das Doppelsemikolon, da der zweite Parameter dann leer ist und der dritte angegeben wird.

in deinem Fall dann so, : =ZAHLENWERT(TEXTTEILEN(TEXTVOR(TEXTNACH($B$1;"@");",";2);;",");".")

natürlich geht auch das von Onur angesprochene Mtrans: =MTRANS(ZAHLENWERT(TEXTTEILEN(TEXTVOR(TEXTNACH($B$1;"@");",";2);",");"."))
aber man kann sich die zusätzliche Funktion auch sparen, da TextTeilen in Zeilen und in Spalten zerlegen kann.

Gruß Daniel
Anzeige
AW: oh je
22.07.2024 21:30:52
Yal
Mit dem Risiko, Onur zu irritieren: eine Lösung mit Regexp.

Öffne mit Alt+F11 den VBA-Editor,
füge ein Modul ein: Menü "Einfügen", "Modul"
darin folgenden Code hineinkopieren:

Function RegExExtrakt(ByVal Target, Pattern As String, Optional Occurence As Integer = 1) As String

Dim R
If TypeOf Target Is Range Then Target = Target.Cells(1).Value
Set R = CreateObject("VBScript.RegExp")
R.Pattern = Pattern
R.Global = True
On Error Resume Next
RegExExtrakt = R.Execute(Target)(Occurence - 1)
End Function


Dann im Blatt die Formeln
=--WECHSELN(RegExExtrakt($B1;"\d+\.\d+(?=,)";1);".";",")
=--WECHSELN(RegExExtrakt($B1;"\d+\.\d+(?=,)";2);".";",")

Was passiert dabei: es wird in der Inhalt von B1 die Zeichenkette mit dem Muster "ein-oder-mehrere Zahl, ein Punkt, ein-oder-mehrere Zahl, dann Komma, die aber nicht zurückgeben wird"
Da es 2 Treffer gibt, jeweils der erste und zweite zurückgeben,
Punkt durch Komma ersetzen und daraus ein Zahl machen (--.. = (-1)*(-1)*.. )

Kann man unter regexr.com testen.

VG
Yal
Anzeige
AW: oh je
22.07.2024 22:04:40
Christian
Hallo Yal,

funktioniert auch, danke.
Aber das ist dann glaube ich endgültig zu hoch für mich, um nachvollziehen zu können.

Gruß
Christian
AW: oh je
22.07.2024 22:11:04
Christian
auch dir nochmal danke für deine Mühe und noch einen schönen Abend
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige