Ziffern innerhalb einer Zelle ermitteln - durch Komma und ggf. blank getrennt
Hallo,
ich habe eine Zelle, in der bspw. folgendes steht (als Text):
13,14, 16
(man beachte mit und ohne Leerzeichen nach dem Komma).
Wie kann ich jetzt per Formel ermitteln, dass es sich bei diesem Zellinhalt um die Zahlen 13 14 und 16 handelt?
Viele Grüße
Jojo
Antwort schreiben
Antwort 1 von Saarbauer vom 18.11.2020, 15:43 Options
Hallo,
da angaben zur Anzahl der durch komme getrennten Zahl fehlen, die erste Teilung
in A1 Steht die Zahlengruppe
in B1 =LINKS(A1;FINDEN(",";A1;1)-1)
in C1 =LINKS(A1;FINDEN(",";A1;1)-1)
und dann in D1 so weiter wie in B1, jedoch anstelle A1 hier C1
Gruß
Helmut
Antwort 2 von rainberg vom 18.11.2020, 15:51 Options
Hallo JoJo,
die einfachste Lösung ist meines Erachtens die Menüfunktion "Text in Spalten".
Als Trennzeichen wählst Du Komma und Leerzeichen.
Gruß
Rainer
Antwort 3 von jojo5 vom 18.11.2020, 15:56 Options
Hallo,
zunächst zu Helmut:
in B1 und C1 steht das gleiche (copy-Fehler???) - d.h. ich bekomme in beiden Zellen 13 geliefert. Ich muss ja jetzt neu aufsetzen und ab der 13 erneut suchen ...
und zu Rainer:
ich muss das in einer Formel haben, weil es wiederkehrend in vielen Zeilen passiert.
Danke
Jojo
Antwort 4 von rainberg vom 18.11.2020, 15:59 Options
Hallo jojo,
Text in Spalten kannst Du auch über viele Zeilen anwenden und ist einfacher als Formeln.
Gruß
Rainer
Antwort 5 von Saarbauer vom 18.11.2020, 16:06 Options
Hallo,
in Zele D1 ist falsch e Formel, beim rüberkopieren nicht aufgepasst, nach D1
=TEIL(A1;FINDEN(",";A1;1)+1;100)
Gruß
Helmut
Antwort 6 von rainberg vom 18.11.2020, 16:36 Options
Hallo jojo,
wenn Du auf Formeln bestehst, kann ich Dir folgende anbieten:
B1
=LINKS(A1;FINDEN(",";A1)-1)
C1
=GLÄTTEN(TEIL(A1;FINDEN(",";A1)+1;FINDEN(",";A1;FINDEN(",";A1)+1)-1-FINDEN(",";A1)))
D1
=GLÄTTEN(RECHTS(A1;VERGLEICH(",";LINKS(RECHTS(A1;SPALTE(1:1));1);0)-1))
Formeleingabe in D1 mit Strg+Shift+Enter abschließen (Matrixformel)
Gruß
Rainer
Antwort 7 von jojo5 vom 18.11.2020, 16:49 Options
Hallo Rainer,
danke - das ist super. Allerdings funktioniert es nur bei max. 3 Werten. Es können aber bis zu 15 in einer Zelle auftauchen.
Welche der beiden letzten Formeln muss ich denn dann kopieren und entsprechend erweitern?
Gruß
Jojo
Antwort 8 von rainberg vom 18.11.2020, 16:53 Options
Hallo jojo,
auch das geht mit Formeln oder Makro, aber sorry das tue ich mir nicht an.
Ich hatte nicht umsonst auf "Text in Spalten" verwiesen.
Gruß
Rainer
Antwort 9 von jojo5 vom 18.11.2020, 16:55 Options
alles klar - trotzdem vielen Dank. Das hat mir schon weitergeholfen.
Gruß
Jojo
Antwort 10 von nighty vom 18.11.2020, 17:06 Options
hi all :-)
dann diese benutzerdefinierte formel
gruss nighty
der parameter 1 gibt die position des zahlenblockes wieder entsprechend anzupassen in den jeweiligen zellen bzw welcher wert angezeigt werden soll
= SumZahlen(Range("A2"), 1)
einzufuegen
alt+f11/projektexplorer/allgemeinesModul
nun ist die function unter einfuegen/funktion/benutzerdefiniert verfuegbar
Function SumZahlen(Zellen As Variant, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[0-9]" = True Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[0-9]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
SumZahlen = zaehler2(zaehler1)
End Function
Antwort 11 von jojo5 vom 18.11.2020, 17:16 Options
Hallo nighty,
vielen Dank. Ich versteh' zwar nur Bahnhof, aber wenn ich die Funktion auswähle, erhalte ich meine erste Ziffer in der Zelle. Wie komme ich jetzt zu den weiteren?
Gruß
Jojo
Antwort 12 von nighty vom 18.11.2020, 17:20 Options
hi jojo :-)
beachte den parameter der zur zeit 1 ist und den ersten zahlenblock von links liest
parameter 2 waere nun der zweite zahlenblock usw.
= SumZahlen(Range("A2"), 2)
gruss nighty
Antwort 13 von jojo5 vom 18.11.2020, 17:30 Options
Hallo,
sagenhaft! Das hatte ich eigentlich versucht - jetzt funktioniert's auf jeden Fall. Das ist echt irre. In ein paar ruhigen Minuten muss ich mal sehen, ob ich das checke.
Eine Anmerkung noch dazu: Bei "=SumZahlen(Range("A2"), 1)" erscheint #WERT, aber bei "=SumZahlen(A2;1)" kommt das richtige Ergebnis.
Noch was: Es reicht hoffentlich, dass die Funktion "in dieser Datei steckt", damit sämtliche user - auch an anderen Rechnern - damit arbeiten können, oder muss ich noch irgendwas aktivieren (z.B. wie bei Analyse-Funktionen)?
VIELEN DANK, Gruß
Jojo
Antwort 14 von nighty vom 18.11.2020, 17:37 Options
hi jojo :-)
diese schreibweise ist falsch daher der fehler
"=SumZahlen(Range("A2"), 1)"
richtig ist es so
erste zahlenblock
"=SumZahlen("A2", 1)"
zweite zahlenblock
"=SumZahlen("A2", 2)" usw.
die benutzerdefinierte formel MUSS auf jeden rechner eingefuegt sein da es keine allgemein gueltige ist
gruss nighty
Antwort 15 von nighty vom 18.11.2020, 17:40 Options
hi jojo :-)
auf jeden rechner war falsch,die formel ist in der datei
wenn du also die datei weitergibst funktioniert die formel dort ohne jegliche einstellungen wie z.B. wie bei Analyse-Funktionen
gruss nighty
Antwort 16 von jojo5 vom 18.11.2020, 17:42 Options
Hallo nighty,
alles klar - vielen Dank für alles und einen schönen Abend.
Gruß
Jojo
Antwort 17 von nighty vom 18.11.2020, 17:42 Options
hi all :-)
*hihi* jojo wenn die routine fehlt,wehe lacht einer grrrr *ich hab da was gehoert*
gruss nighty
Antwort 18 von jojo5 vom 18.11.2020, 17:46 Options
sorry - muss ich das verstehen????
Antwort 19 von rainberg vom 18.11.2020, 17:47 Options
Hallo jojo,
sorry, dass ich mich noch mal einmische.
Angenommen Dei Zahlenblock steht in A2, dann gib in B2 folgende Formel ein und kopiere sie nach Bedarf nach rechts.
=sumZahlen($A2;SPALTE()-1)
Gruß
Rainer
Antwort 20 von nighty vom 18.11.2020, 17:48 Options
hi jojo :-)
das war indirekte eigenkritik ,der range fehler wie die angabe auf rechner bezogen war doch falsch von mir :-(
gruss nighty