Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1460to1464
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

Zelle Splitten

Zelle Splitten
26.11.2015 01:42:25
Christoph
Hey. Habe es nicht geschafft im alten Thema einen Beitrag zu verfassen. Deshalb nochmal neu.
Habe das Makro mal erhalten.
Option Explicit
Sub splitCells()
Dim vntIn As Variant, vntOut() As Variant, vntTmp() As Variant, vntSplit As Variant, vntH As  _
Variant
Dim lngI As Long, lngJ As Long, lngN As Long, lngM As Long
With Sheets("Tabelle2") 'Ausgabgstabelle - Anpassen!
vntH = .Range("A2:F1")
vntIn = .Range("A2:F" & Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row))
End With
Redim vntTmp(1 To 1, 1 To UBound(vntIn, 2))
For lngI = 1 To UBound(vntIn, 1)
vntSplit = Split(vntIn(lngI, 6), ",")
For lngN = 0 To UBound(vntSplit)
For lngJ = 1 To UBound(vntIn, 2) - 1
vntTmp(1, lngJ) = vntIn(lngI, lngJ)
Next
vntTmp(1, UBound(vntTmp, 2)) = vntSplit(lngN)
lngM = lngM + 1
Redim Preserve vntOut(1 To lngM)
vntOut(lngM) = vntTmp
Next
Next
vntOut = Application.Transpose(Application.Transpose(vntOut))
Worksheets.Add
With ActiveSheet
.Columns(6).NumberFormat = "0"
.Range("A1").Resize(1, UBound(vntH, 2)) = vntH
.Range("A2").Resize(UBound(vntOut), UBound(vntOut, 2)) = vntOut
.Columns.AutoFit
End With
End Sub
Habe das Problem das wenn es 5-6 Zahlen sind in einer Zelle gibt es kein Problem.
Wenn es aber 8 oder mehr Zahlen sind die gesplittet werden müssen bricht das Makro immer ab mit Fehler.
Kann mir da eventuell jemand weiter helfen?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle Splitten
26.11.2015 10:10:37
Christoph
Hier nochmal ein Beispiel welche Zahlenreihe nicht gesplittet wird.
Es kommt dann immer Typen unverträglich.
221836843074,221836844941,221836845848,221836846383,221836846867,221836847478,221836848223,221836849975,221836851372,221836851934,221836853498,221836863231,221836868353,221836869561,221836870948,221836875148,221836875554,221837778883,221838686177,221838690883,221838701337,221838703900,221838731229

lad mal die Mappe hoch. owT
26.11.2015 10:15:41
Rudi

AW: lad mal die Mappe hoch. owT
26.11.2015 10:55:32
Rudi
Hallo,
bei mir schlägt
vntOut = Application.Transpose(Application.Transpose(vntOut))

fehl.
Ersetze durch
  ReDim vntTmp(1 To UBound(vntOut), 1 To UBound(vntIn, 2))
For lngI = 1 To UBound(vntOut)
For lngJ = 1 To 6
vntTmp(lngI, lngJ) = vntOut(lngI)(1, lngJ)
Next lngJ
Next lngI
vntOut = vntTmp
Gruß
Rudi

Anzeige
Das hatte ich bereits vermutet, Rudi! Gruß owT
26.11.2015 11:14:45
Luc:-?
:-?

liegt an der Array-Struktur
26.11.2015 12:06:26
Rudi
Ergebnis ist
vntOut(1 to 160)(1 to 6)
Das geht mit Transpose nicht.
Gruß
Rudi

Das bezweifle ich, ...
26.11.2015 13:03:27
Luc:-?
…Rudi: ;-)
Sub arrTestTrans()
Dim x
x = Array(Array(1, 2, 3), Array(4, 5, 6))
MsgBox x(0)(1)
x = WorksheetFunction.Transpose(x)
MsgBox x(2, 1) & vbTab & 160 * 6
End Sub
.Transpose wandelt eine irreguläre in eine reguläre VBA-Matrix um, zumindest dann, wenn sie als vertikaler Vektor, dessen Elemente aus gleichlangen, horizontalen Vektoren bestehen, organisiert ist. Nur, wenn eine dieser Voraussetzungen nicht erfüllt ist, klappt das nicht. Das ist übrigens auch ein Vorteil von .Transpose, wenn man solche „Matrizen“ auf einen ZellBereich abbilden will. Die Größen­Ordnung von 160×6=960 ist von .Transpose auch zu bewältigen.
Luc :-?

Anzeige
Das ist für meine Fml kein Problem, ...
26.11.2015 11:13:35
Luc:-?
…Christoph:
 EFGHIJKLMNO
1ebay111728097401 111728097401       
2ebay111728189955 111728189955       
3ebay111728294265,111728311679,111728342691,111729015888111728294265111728311679111728342691111729015888    
4ebay111729279882 111729279882       
5ebay111730033888 111730033888       
6ebay111731213445,111731214243,111731225963,111731228568,111731230417,111731235357,111731236426111731213445111731214243111731225963111731228568111731230417111731235357111731236426 
7ebay111731906082 111731906082       
8ebay201403123517 201403123517       
9ebay201406279011,201406291228,201406298476,201406317049,201406318406201406279011201406291228201406298476201406317049201406318406   
10ebay201408074535 201408074535       
11ebay201408156614 201408156614       
12ebay201408625797 201408625797       
13ebay201410749879 201410749879       
14ebay201410818792 201410818792       
15ebay201411428855 201411428855       
16ebay201413055007 201413055007       
17ebay221831304361,221831316390,221831318652221831304361221831316390221831318652     
18ebay221832780598 221832780598       
19ebay221833565515 221833565515       
20ebay221836711776 221836711776       
Mal als MatrixFml für den ganzen Bereich (hier nur auf den Ausschnitt bezogen), um das der Wirkung deines Makros anzugleichen (sonst wäre d.Fml kürzer):
H1:O20:{=WENNFEHLER(WENN(ANZAHL(VSplit(INDEX(F1:F71;ZEILE());",";1))=1;VSplit(INDEX(F1:F71&",";ZEILE());",";1);VSplit(INDEX(F1:F71;ZEILE());",";1));"")}
Luc :-?

Anzeige
Das sind doch nur 23 12stellige Zahlen, ...
26.11.2015 10:39:31
Luc:-?
…Christoph;
damit sollte ein gutes Pgm doch keine Probleme haben. Evtl ist es nicht pflegeleicht und du hast eine Variable nicht richtig angepasst. Für meine UDF VSplit (im Archiv per RECHERCHE-Button zu finden) war's jedenfalls ein Klacks).
Es könnte natürlich auch sein, dass es nicht am Bsp liegt, sondern der GesamtBereich zu groß wird (.Transpose hat Grenzen!) und deshalb an der Position des Bsps abgebrochen wird. Das wirkt sich nicht auf die o.g. UDF aus, die in ZellFmln unter Einbeziehung von INDEX auch auf ganze Spalten bzw Zeilen angewendet wdn könnte.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Das sind doch nur 23 12stellige Zahlen, ...
26.11.2015 21:33:34
Christoph
Hey.
Ich danke euch für eure Hilfe. Habe es mit den Varianten probiert die hier stehen. Klappt alles so wie gewünscht und bin mal wieder begeistert wie schnell einem hier geholfen wird!
mfg Zahni

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige