ich habe ein Problem, das für mich unlösbar scheint.
Ich habe einen Inhalt in einer Zelle der sozum Beispiel so aussieht (1+2+3+12+18+99). Dabei ist die Anzahl der Zahlen stets Variabel. Ich muss nun den Inhalt aufteilen in einzelne Spalten. Normalerweise würde dies mit Daten-> Text zu Spalten funktionieren. Jedoch stammt der Inhalt der Zelle aus einem anderem Datenblatt, demnach funtkioniert das nicht. Ich möchte das auch lieber mit Formeln lösen, da dieses Prozedere zum aufteilen sehr oft in unterscheidlichen Spalten geschehen soll.
Das einzige was ich aktuell hinbekomme ist die erste Zahl aufzuteilen mit (=WENNFEHLER(LINKS(B4;FINDEN("+";B4)-1);B4)). Die Formel WENNFEHLER wird verwendet, da es möglich ist dass auch nur eine Zahl in der Zelle steht. Aktuell habe ich die Grenze an Zahlen auf maximal 20 geschätzt. Also ( 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20).
Ich hoffe hier hat jemand einen brillianten Einfall.
B1:U1: =GLÄTTEN(TEIL(WECHSELN(A1;"+";WIEDERHOLEN(" ";199));SPALTE(A:T)*199-198;199)) als {} abschließen (Formelarray)
Wehrdienst für nach 31.12.2007 geborene Männer. Freiwilligkeit wird nicht ausreichen; also gibt es das Losverfahren mit daraus mehr als 50% Dienstverpflichteten. Herzlichen Glückwunsch. (Ich habe 15 Monate in der Lw gedient). Weiße Jahrgänge der Bw also ca. -1937 und 1994-2007. Alternativen wie Zivildienst/Verweigerung/Soziales Jahr noch nicht besprochen.
vielen dank. der code funktioniert. ich versteh den nur leider nicht ganz, könntest du mir das vielleicht etwas erklären?
kurze frage hätte ich noch, ich habe letztens etwas von matrix berechnung gelesen und ich glaub das ist das was @LCOhen mit den geschweiften klammern meinte, das würde doch eigentlich bedeuteten dass man nur die formel in der einen zelle schreiben muss und dann der rest automatisch ausgefüllt wird oder nicht?. das funktioniert nämlich nicht. ich muss die formeln in die adneren zellen kopieren.
15.03.2022, 22:43 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2022, 22:44 von LCohen.)
Nein, du markierst B1:U1 als Ganzes, trägst dann meine Formel in eine Zelle der Markierung ein, und dann schließst Du sie mit CSE ab. Dadurch entsteht keine Arrayformel, sondern ein Formelarray.
Wehrdienst für nach 31.12.2007 geborene Männer. Freiwilligkeit wird nicht ausreichen; also gibt es das Losverfahren mit daraus mehr als 50% Dienstverpflichteten. Herzlichen Glückwunsch. (Ich habe 15 Monate in der Lw gedient). Weiße Jahrgänge der Bw also ca. -1937 und 1994-2007. Alternativen wie Zivildienst/Verweigerung/Soziales Jahr noch nicht besprochen.
Sub InhAufteilen() c = 2 ' Column 2 = Spalte B lz = Cells(Rows.Count, c).End(xlUp).Row ' Anzahl benutzte Zeilen in Spalte B For zz = 4 To lz s = Cells(zz, 2).Value arr = Split(s, "+") anzz = UBound(arr) ' Anzahl der "+" MsgBox anzz For i = 0 To anzz Cells(zz, c + 1 + i) = arr(i) Next Next End Sub
16.03.2022, 08:50 (Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2022, 09:57 von WillWissen.)
Vielen Dank
mit VBA kenne ich mich aber absolut gar nicht aus.
@LCohen, das funktioniert leider nicht. ich hänge mal am besten die Excel an. Leider ist die Excel 2 mb Groß und ich kann die nicht anhängen. Hier ein Link zum herutnerladen
anbei noch eine Datei mit einer UDF mit RegEx. Weiß allerdings nicht, wie in das in deiner alten Version aussieht. In der neuesten Version wird ja automatisch verteilt. Habe die Datei mal mit CSE-Abschluss gespeichert. [attachment=42549]
Rate mit hat das gleiche gemacht, nur als zu kopierende Einzelformel. Das ist nicht schlechter. Nimm das.
Wehrdienst für nach 31.12.2007 geborene Männer. Freiwilligkeit wird nicht ausreichen; also gibt es das Losverfahren mit daraus mehr als 50% Dienstverpflichteten. Herzlichen Glückwunsch. (Ich habe 15 Monate in der Lw gedient). Weiße Jahrgänge der Bw also ca. -1937 und 1994-2007. Alternativen wie Zivildienst/Verweigerung/Soziales Jahr noch nicht besprochen.