Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellinhalt nach Text/Zahlen trennen

Zellinhalt nach Text/Zahlen trennen
Cordula
Hallo Excel-Freunde,
Ich habe in A1 bis A3 folgende Werte stehen:
123abv456ef
45de98gh
4trog12345a
Nun möchte ich die Zahlen von den Buchstaben trennen, so dass ich dann insgesamt 4 Spalten habe.
In der Recherche habe ich folgende Arrey gefunden:
=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;SPALTE(1:1))*1))))
zumindest trennt er mir hier schon mal die ersten Ziffern. Welche Formel brauch ich nun, um auch den Rest zu trennen?
Vielen Dank schon einmal für eure Tipps.
LG
Cordula
AW: Zellinhalt nach Text/Zahlen trennen
06.03.2010 18:11:18
Josef

Hallo Cordula,

 ABCDE
1123abv456ef123abv456ef
245de98gh45de98gh
34trog12345a4trog12345a

Formeln der Tabelle
ZelleFormel
B1{=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;SPALTE(1:1))*1))))*1}
C1=TEIL(A1;LÄNGE(B1)+1;FINDEN(D1;A1)-LÄNGE(B1)-1)
D1{=TEIL(LINKS(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)); MAX(WENN(ISTZAHL(TEIL(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)); SPALTE(1:1); 1)*1); SPALTE(1:1)))); VERGLEICH(WAHR;ISTZAHL(TEIL(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)); SPALTE(1:1); 1)*1); 0); LÄNGE(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1))))*1}
E1=TEIL(A1;FINDEN(D1;A1)+LÄNGE(D1); 99)
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Sepp

Anzeige
AW: Zellinhalt nach Text/Zahlen trennen
06.03.2010 18:17:55
ransi
HAllo Cordula
Ich hätte nicht gedacht das das nur mit Formeln machbar ist.
(Deswegen hab ichs auch garnicht erst versucht ;-))
Hier mein VBA-Vorschlag:
Diesen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function machs(zelle) As Variant
Dim RegEx As Object
Dim objM As Object
Dim out As Variant
Dim I As Integer
Set RegEx = CreateObject("VbScript.RegExp")
With RegEx
    .Pattern = "([A-Za-zÄÖÜöäüß]+|[0-9]+)"
    .Global = True
    Set objM = .Execute(zelle.Text)
    If objM.Count > 0 Then
        Redim out(1 To objM.Count)
        For I = 1 To objM.Count
            out(I) = objM(I - 1).Value
        Next
    End If
End With
machs = out
End Function


Der Aufruf ist dann so:
Tabelle1

 ABCDE
1123abv456ef123abv456ef
245de98gh45de98gh
34trog12345a4trog12345a
4     

Formeln der Tabelle
ZelleFormel
B1=INDEX(machs($A1); SPALTE(A1))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
Außer Konkurrenz etwas länger, aber ebenfalls...
07.03.2010 04:09:53
Luc:-?
…nur eine (Matrix-)Fml auf Basis von udFktt, die den Vorteil haben, keine Insellösung, sondern in ein ganzes System von udFktt (AddIn) eingebettet zu sein… ;-)
{=T2CharVect(MaskOn(A1;"num")&" "&MaskOn(A1;"alf");"1 3 2 4")}
…wenn die Reihenfolge der Textteile nicht verändert wdn soll, anderenfalls würde…
{=Splint(MaskOn(A1;"num")&" "&MaskOn(A1;"alf");" ")}
…reichen. Wenn die Zahlenteile als echte Zahlen dargestellt wdn sollen, kann das Ergebnis auch in eine Matrixkonstante in Textform umgewandelt wdn, die sich mit der XLM-Fkt AUSWERTEN in einer benannten Fml in einen Vektor umwandeln lässt. Dafür enthält das o.g. AddIn noch die udFkt RinMxList und die ersatzweise für die XLM-Fkt AUSWERTEN auch im TabBlatt anwendbare udFkt TransFor, die auch noch zusätzl Fktionalitäten enthält. Diese sind aber nicht unbedingt erforderlich, denn das kann auch mit WECHSELN und {.""}-Hinzufügung erreicht wdn.
Ein analoger Weg lässt sich auch ganz ohne udFktt beschreiten, wenn man Iterationen nutzt. Dabei muss die max Iterationszahl mind um 1 größer als die Länge des längsten Textes eingestellt wdn. In einer Hilfsspalte kann so der Text unter Verweis auf eine Hilfszelle mit Iterationszähler neu, in Form einer Matrixkonstanten zusammengesetzt wdn. Mit AUSWERTEN in einer benannten Fml, die auf diese Hilfsspalte verweist, kann dann dieser Matrixkonstantentext auf einzelne Spalten aufgeteilt wdn. Ggf fkt das auch ohne Hilfsspalte, aber das habe ich lieber nicht ausprobiert, weil dabei Probleme mit dem zeitl Ablauf zu befürchten sind. Obwohl man hierbei iW mit 1er Hptfml auskommt, die anderen 3 können aufwandsmäßig vernachlässigt wdn, ist diese doch sehr lang (meine: 283 Zchn).
Fazit: Der Weg mit zusätzl udFktt ist im Prinzip der bessere, weil er idR derartige Fml-Bandwürmer vermeidet, wie sie auch in den anderen Lösungen zu sehen sind. So etwas halte ich für wenig praxisgerecht, weshalb wohl Ransi auch von vornherein darauf verzichtet hat, nach einer klassischen StddFmlLösung zu suchen… ;-)
Gruß+schöSo, Luc :-?
Anzeige
Iterationslösung
07.03.2010 13:35:06
Luc:-?
Hi, Folks,
habe HptFml auf 241 Zchn gekürzt, steht in B2 und sieht jetzt so aus…
=WENN(B2=0;WENN(ISTZAHL(--LINKS(A2));"{";"{""");B2)&WENN(B$1=LÄNGE(A2)+1;WENN(ISTZAHL
(--RECHTS(A2));"}";"""}");TEIL(A2;B$1;1)&WENN(ISTZAHL(--TEIL(A2;B$1;2));"";WENN(ISTZAHL
(--TEIL(A2;B$1;1));".""";WENN(ISTZAHL(--TEIL(A2;B$1+1;1));""".";""))
In B$1 steht der Iterationszähler =WENN(B1<20;B1+1;20) und in C2:F2 das Endergebnis als MatrixFml {=TxZsplitt} aus der benannten Fml TxZsplitt =AUSWERTEN($B2), die unter Namen definiert wird. Spalte B kann natürlich auch ausgeblendet wdn, würde ich aber nicht unbedingt empfehlen.
Gruß+schöSo, Luc :-?
Anzeige
AW: Iterationslösung
07.03.2010 14:04:30
robert
hi Luc,
in wien gibt es einen spruch für menschen, die etwas ausserhalb der norm machen:
..man sagt: der frisst auch kleine kinder...
also ich glaube, du bist auch so einer :-))
...bist also nicht mehr krank ?
gruß
robert
Doch, doch, aber, wenn man den ganzen Tag...
07.03.2010 15:33:13
Luc:-?
…flach liegt, kann man irgendwann nicht mehr liegen, schlafen etc und muss versuchen, was Sinnvolles zu tun und das ist dann halt nur ein Problem, aber dann wohl eher ein Lohnendes. Immerhin hat's dich ja aus dem Weaner Kaffeehaus g'lockt… (war zwar noch nie in Wien, kenne so etwas aber aus Bratislava und Budapest, den „Original-Wiener“ in Potsdam will ich da gar nicht hinzurechnen, weil ich's eben anders kenne — aber die Torten sind wenigstens recht echt, die Preise allerdings auch!) Wenn es da nur nicht die viele Konkurrenz von Berlin über Potsdam bis runter zum Ex-OKKH/OKW/OKGSDS und noch darüber hinaus bis tief in die Mark gäbe…
Und Ransis Vorlage hat den Versuch provoziert, das mit meinem udF-System zu lösen, daraus entstand dann die Problematik echte Zahl oder Textzahl → auch udF über Matrixkonst und schließl der Versuch, dass alles ohne udF, eben auf diesem Weg zu schaffen, weil das ein anderer und wahrscheinl einfacher verallgemeinbarerer Weg ist und eher von WF verstanden wird als das ganze udF-Teufelszeug (dabei kann so'ne XLM-Fkt mitunter viel tückischer sein!)… ;-] (*gequält grins/lächelnd*)
Ich nehme an, du hast das mal ausprobiert!? Dann kennst du auch die Tücken bei mehreren zu bearbeitenden Items: Erst mal alle HptFmln durch Anklicken auf Anfangswert setzen, dann Iterationszähler anklicken und neu rechnen lassen → dann siehst du die MxKonstt wachsen…
Gruß nach Wien aus D-BB-TF ganz oben in der Lärmzone!
Luc :-?
PS: …un' kleene Kinna fress' ick nich, zuminnst nich ohne Messa un' Jabel… ;-]]
Anzeige
Da will ich nix "eher" verstehen !
07.03.2010 17:57:41
WF
Hi,
die von mir benutzten Funktionen sind SUMME, LINKS, TEIL, VERGLEICH, INDIREKT, ISTZAHL, ZEILE, SPALTE, LÄNGE - und diese Dinger gab's schon vor über 20 Jahren zu Excel3-Zeiten.
Hätte ich diese Formeln also 1990 gebastelt, würden diese heute genauso noch funktionieren.
Eure 20 Jahren alten codes sind heute alle Schrott - die Aufwärtskomtabilität ist unterirdisch.
Salut WF
...eben! Und hast nun alles falsch verstanden,...
07.03.2010 20:06:56
Luc:-?
…Walter,
denn meine Bemerkung zielte auf die Iterationslösung, nicht auf die udFktt, die du ja bekanntlich hasst wie der Teufel das Weihwasser. Ich kann dich aber beruhigen…
1. sind meine ältesten noch in Gebrauch befindlichen udF nicht älter als 8 Jahre (vor 20 Jahren hatte xl noch 'ne eigene Makrosprache, von der heute noch die auch von dir benutzten XLM-Fktt übrig sind) und
2. fktionieren die auch noch unter xl12, weil sie nichts enthalten, was inzwischen abgeschafft wurde. Viell bekommen einige meiner Subroutinen und nur sehr wenige udF mal ein Problem, wenn die XLM-Fktt nicht mehr unterstützt wdn, aber das träfe ja einige deiner Fmln genauso.
3. Lasse ich mich nicht auf dürftige Fktsvorgaben beschränken, wenn eine Software auch Erweiterungsmöglichkeiten enthält. Konkurrenzprodukte bieten da ja schon standardmäßig mehr…
…und 4. musst du doch zugeben, dass etliche eurer Fmln viel zu lang und kompliziert sind, als dass sie über einen engen Kreis von Fml-Freaks hinausgelangen könnten. In vielen Fällen dürfte einem normalen Bürosachbearbeiter doch schon die Anpassung der fertigen Fml an seine spezifischen Bedingg schwer fallen. Ob er das mit einer Fülle zusätzl Fktt besser könnte, sei hier mal dahingestellt, denn das mag in 1.Linie ein Problem der Lehre und eigener Neugier sein.
Eine komplexe FertigFml benötigt immer ein entsprechendes Problem, um eingesetzt wdn zu können, mit einer Fkt kann man auch experimentieren und so ihre Möglichkeiten ausloten. Etwas anderes hast du ja im Prinzip am Anfang deiner Bemühungen auch nicht gemacht. Genau das Gleiche kann man mit entsprechend gestalteten udFktt auch tun. Sie arbeiten dann problemlos auch im Verbund mit anderen (Standard-)Fktt in Fmln zusammen.
Insofern solltest du deine ablehnende Haltung ggf mal überdenken, denn eigentl ist die inkonsequent und vor allem das gebetsmühlenhaft wiederholte Verwende nie AddIns! erinnert doch eher an den berühmten Satz, dass kein Wissenschaftler älter als 40 Jahre wdn dürfte, denn danach sei er nicht mehr bereit, neue Ideen zu akzeptieren… ;-)
In diesem Sinne eine schöne neue Woche, Luc :-?
Anzeige
In A2 steht natürl d.1.Originaltext! owT
07.03.2010 15:40:06
Luc:-?
:-?
Ergänzung: Isolierbare u.sich ggf wiederholende...
09.03.2010 01:15:34
Luc:-?
…FmlTeile können natürlich auch in benannte Fmln ausgelagert wdn, sofern sie keinen Selbstbezug (auf die Standortzelle der Fml) enthalten. Aber weder die zwingend diesen Selbstbezug enthaltende verbleibende Rahmenfkt noch der Iterationszähler können als benannte Fmln eingerichtet wdn. Deshalb ist hier eine Hilfsspalte unumgänglich.
Luc :-?
Berichtigung: HptFml ist 242 Zeichen lg und...
09.03.2010 15:28:04
Luc:-?
…in ihrer Darstellung fehlen die beiden letzten schließenden Klammern (also zum Schluss 4 statt 2 Klammern!).
Luc :-?
FINDEN geht in die Hose, wenn
06.03.2010 18:41:49
WF
die Ziffernfolgen identisch sind - z.B.:
123ich123du
Salut WF
@Walter! wenn ich gewust hätte....
06.03.2010 18:44:34
Josef

Servus Walter,
... das du dich heute auch hier "rummtreibst", hätte ich gleich meine Finger davon gelassen;-)))

Gruß Sepp

Anzeige
Formelalternativen
06.03.2010 18:26:24
WF
Hi Cordula,
in B1 - wie gehabt:
{=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;SPALTE(1:1))*1))))}
in C1:
{=TEIL(A1;LÄNGE(B1)+1;VERGLEICH(1;ISTZAHL(TEIL(A1;ZEILE(INDIREKT(LÄNGE(B1)+1&":99"));1)*1)*1;0)-1)}
in D1:
{=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+1;VERGLEICH(0;ISTZAHL(TEIL(A1;ZEILE(INDIREKT(LÄNGE(B1)+LÄNGE(C1) +1&":99"));1)*1)*1;0)-1) }
in E1:
=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+LÄNGE(D1)+1;99)
Salut WF
Text und Zahlen trennen
06.03.2010 18:33:58
Erich
HI Cordula,
und hier noch mein Vorschlag:
 ABCDE
1123abv456ef123abv456ef
245de98gh45de98gh
34trog12345a4trog12345a
4555ccc55cc555ccc55cc

Formeln der Tabelle
ZelleFormel
B1{=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;SPALTE(1:1))*1))))}
C1{=LINKS(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)); MIN(WENN(ISTZAHL(TEIL(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)); SPALTE(A1:F1); 1)*1); SPALTE(A1:F1)))-1)}
D1{=LINKS(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)-LÄNGE(C1)); SUMME(N(ISTZAHL(LINKS(RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)-LÄNGE(C1)); SPALTE(1:1))*1))))}
E1=RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)-LÄNGE(C1)-LÄNGE(D1))
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

@Sepp: Teste mal deine Formeln mit 555ccc55cc in SPalte A. :-(
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
noch etwas kürzer
06.03.2010 19:07:56
Erich
Hallo Cordula,
so gehts noch etwas kürzer:
 ABCDE
1555abc55de555abc55de

Formeln der Tabelle
ZelleFormel
B1{=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;SPALTE(1:1))*1))))}
C1{=TEIL(A1;LÄNGE(B1)+1;MIN(WENN(ISTZAHL(TEIL(TEIL(A1;LÄNGE(B1)+1;99); SPALTE(1:1); 1)*1); SPALTE(1:1)))-1)}
D1{=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+1;SUMME(N(ISTZAHL(LINKS(TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+1;99); SPALTE(1:1))*1))))}
E1=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+LÄNGE(D1)+1;99)
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
@Erich-stimmt doch-oder? Gruß-
06.03.2010 19:07:57
robert
Tabelle1

 ABCDE
2555ccc55cc555ccc55cc

Formeln der Tabelle
ZelleFormel
B2{=LINKS(A2;SUMME(N(ISTZAHL(LINKS(A2;SPALTE(1:1))*1))))*1}
C2{=TEIL(A2;LÄNGE(B2)+1;VERGLEICH(1;ISTZAHL(TEIL(A2;ZEILE(INDIREKT(LÄNGE(B2)+1&":99")); 1)*1)*1;0)-1)}
D2{=TEIL(A2;LÄNGE(B2)+LÄNGE(C2)+1;VERGLEICH(0;ISTZAHL(TEIL(A2;ZEILE(INDIREKT(LÄNGE(B2)+LÄNGE(C2) +1&":99")); 1)*1)*1;0)-1)*1}
E2=TEIL(A2;LÄNGE(B2)+LÄNGE(C2)+LÄNGE(D2)+1;99)
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Sorry, ist die Formel von WF !...owT
06.03.2010 19:12:52
WF
Sorry, hätt ich mal aktualisiert... :-) (owT)
06.03.2010 19:18:54
Erich
AW: @Robert - das ja, aber ...
06.03.2010 19:16:57
Erich
Hi Robert,
die Formel, die du gerade für C2 gepostet hast, stimmt - klar. Sie stammt von Walter (WF).
Ich habe mich aber auf Sepps Formeln bezogen.
Sepp hatte für C2 die Formel =TEIL(A2;LÄNGE(B2)+1;FINDEN(D2;A2)-LÄNGE(B2)-1)
vorgeschlagen - und bei dieser Formel knallt es, wie auch Walter schreibt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Zellinhalt nach Text/Zahlen trennen
Cordula
... ach du grüne Neune! Was für eine Formel!!
KLAPPT SUPER! Danke.
Natürlich auch für das VBA, aber Formel ist natürlich besser.
Ist es sehr schwer, mir zu erklären was diese Formeln machen?
Vielen vielen Dank!
LG
Cordula
@alle :-)
Cordula
Hallo,
bin jetzt völlig durcheinander, habe mich für folgende Formel entschieden:
{=LINKS(A1;SUMME(N(ISTZAHL(LINKS(A1;PALTE(1:1))*1))))}
{=TEIL(A1;LÄNGE(B1)+1;MIN(WENN(ISTZAHL(TEIL(TEIL(A1;LÄNGE(B1)+1;99); SPALTE(1:1); 1)*1); SPALTE(1:1)) )-1) }
{=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+1;SUMME(N(ISTZAHL(LINKS(TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+1;99); SPALTE(1:1)) *1)))) }
=TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+LÄNGE(D1)+1;99)
Vielen Dank an alle!
LG
Cordula

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige