PDA

Vollständige Version anzeigen : mehrfache Teilung (kniffelig)


schlingel
08.04.2012, 17:33
Hallo,
ich habe eine, wie ich finde, etwas knifflige Frage, bei der ich unbedingt Hilfe benötige. Dazu muss ich sagen, dass ich keine Ahnung von Excel habe, würde euch also bitten idiotensicher auszudrücken. :)

Ich möchte, dass Zellen geteilt werden, wobei z.B. ein Symbol anzeigt, wo dies geschehen soll. Anbei findet ihr das Vorhaben noch einmal visualisiert.
In meinem Fall sind es : und *.
1. Hinter einem * soll die Zelle geteilt werden. Die Tochterzelle bekommt ihren Platz in derselben Spalte, in der auch die Mutterzelle liegt.
• Es kann sein, dass einige Zelle sehr häufig, andere Zellen nur einmal geteilt werden müssen.
• Es gibt in einer anderen (zweiten) Spalte eine spezifische Zelle, welche die Mutterzelle ergänzt. Es soll erkenntlich sein, dass sich die Tochterzellen auch auf diese Ergänzungen beziehen: Entweder die Tochterzellen stehen direkt unter der Mutterzelle oder bei der Teilung muss in der anderen (zweiten) Spalte in der Zeile der Tochterzelle ebenfalls die Ergänzung der Mutterzelle stehen.
2. Hinter einem : soll die Zelle erneut geteilt werden. Die Tochterzelle bekommt ihren Platz in einer anderen (dritten) Spalte in der Zeile der Mutterzelle.
• Wenn die Zellen hinter den * schon geteilt sind, kommt nur ein : in jeder Zelle vor.

Ich hoffe sehr, dass ihr mir dabei weiterhelfen könnt, sonst muss ich circa 1500 Zellen zwei bis fünfmal manuell teilen…

Danke schon einmal im Voraus

Schlingel

josef e
08.04.2012, 19:45
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Schlingel,

Daten stehen ab A2, die Ausgabe erfolgt ebenfalls ab A2!

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><b><span style="color:#0000FF"; >Sub</span> ordnen()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> vntOut <span style="color:#0000FF"; >As</span> Variant, vntTmp <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> lngRow <span style="color:#0000FF"; >As</span> Long, lngLast <span style="color:#0000FF"; >As</span> Long, lngIndex <span style="color:#0000FF"; >As</span> Long, lngCount <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Long</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> ActiveSheet<br />&nbsp;&nbsp;&nbsp;&nbsp;lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> vntOut(1 <span style="color:#0000FF"; >To</span> (lngLast - 1) * 5, 1 <span style="color:#0000FF"; >To</span> 3)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> lngRow = 2 <span style="color:#0000FF"; >To</span> lngLast<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> InStr(1, .Cells(lngRow, 1), <span style="color:#808080"; >"*"</span>) &gt; 0 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntTmp = Split(.Cells(lngRow, 1), <span style="color:#808080"; >"*"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Redim</span> vntTmp(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntTmp(0) = .Cells(lngRow, 1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> lngIndex = 0 <span style="color:#0000FF"; >To</span> <span style="color:#0000FF"; >UBound</span>(vntTmp)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> InStr(1, vntTmp(lngIndex), <span style="color:#808080"; >":"</span>) &gt; 0 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lngCount = lngCount + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntOut(lngCount, 1) = Trim$(Split(vntTmp(lngIndex), <span style="color:#808080"; >":"</span>)(0))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntOut(lngCount, 2) = Trim$(Split(vntTmp(lngIndex), <span style="color:#808080"; >":"</span>)(1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vntOut(lngCount, 3) = .Cells(lngRow, 2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;&nbsp;&nbsp;.Cells(2, 1).Resize(<span style="color:#0000FF"; >UBound</span>(vntOut, 1), <span style="color:#0000FF"; >UBound</span>(vntOut, 2)) = vntOut<br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /></span></nobr></div>


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

schlingel
08.04.2012, 23:52
Ich danke vielmals.....


... aber ich habe keine Idee, wie ich das anwenden soll. :P

josef e
09.04.2012, 06:10
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Schlingel,

Code in ein allgemeines Modul kopieren und los gehts.


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

schlingel
09.04.2012, 16:08
Oh... hm... wie soll ich es sagen... das ist genial!!!! Tausend Dank!

schlingel
11.04.2012, 12:10
Irgendwie klappt da etwas noch nicht...

Hier die Schritte zur Umformung der Zellen von vier Spalten:
1. =K1&WENN(L1<>"";" {"&L1& "}";"")&": "&M1 ---> B = K+L+M
2. Code von josef e --> Aufteilung von A in Bezug zu B ---> A = neuA + neuB, wobei B=C
3. Kopie der des Resultats in eine .csv, die ich benötige.

Fehler die Auftreten:
1. es treten immer wieder Bezugfehler auf
2. eine Kopie in die .csv ist nicht möglich

Ich hoffe, dass man mir noch einmal weiter helfen kann...

josef e
11.04.2012, 19:37
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Schlingel,

mal schau'n, ob aus deiner Beschreibung irgendwer schlau wird;-))


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>