Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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
25.09.2015 18:52:42
Christoph
Hey ich mal wieder.
Ist es möglich dieses Format
Spalte A Spalte F
Überschrift Überschrift
24 111674992209
175 111675331574
82 111675681338
18 111676663873
33 111677576382
98 111678900812
157 111679009409
40 111679039641,111679040965
169 111680499788,111680511514,111680514517
146 111681549526
235 111682532836
242 111684158669
248 111684925330
269 111685101231,111685113923,111682636346
318 111686738978
414 111687092213
351 111687252372,111687256094,111687258394,111687261274
450 111687307513
509 111687403681
zu splitten das die neue Tabelle so aussieht?
Ist bis zeile 9 mit den oberen Daten.
24 111674992209
175 111675331574
82 111675681338
18 111676663873
33 111677576382
98 111678900812
157 111679009409
40 111679039641
40 111679040965
169 111680499788
169 111680511514
169 111680514517
Gruß Christoph

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle Splitten
25.09.2015 19:15:31
Daniel
Hi
im Prinzip so:
Sub test()
Dim arr1, arr2
Dim z1 As Long, z2 As Long, F As Long
Dim TeilText
arr1 = Range("A2:F" & Cells(Rows.Count, 1).End(xlUp).Row)
ReDim arr2(1 To UBound(arr1, 2), 1 To 1)
For z1 = 1 To UBound(arr1, 1)
For Each TeilText In Split(arr1(z1, 6), ",")
z2 = z2 + 1
ReDim Preserve arr2(1 To UBound(arr2, 1), 1 To z2)
arr2(1, z2) = arr1(z1, 1)
arr2(6, z2) = TeilText
Next
Next
Range("A2").Resize(UBound(arr2, 2), UBound(arr2, 1)) = WorksheetFunction.Transpose(arr2)
End Sub

bei den Werten mit 2 Elementen musst du darauf achten, dass diese auch wirklich als text in der Zelle stehen und nicht in eine Zahl gewandelt werden.
Gruß Daniel

Anzeige
AW: Zelle Splitten
25.09.2015 19:21:55
Christoph
Wunderbar. Funktioniert.
Danke dir.
Das mit den Text sollte kein Problem sein, da diese auch per Makro ermittelt werden.
Habe vergessen zu sagen das die alte Tabelle erhalten bleiben soll und das Ergebnis in eine Andere Datei kommt.
Bekommst du das vielleicht auch noch hin?
Gruß Christoph

AW: Zelle Splitten
25.09.2015 19:57:22
Daniel
Hi
dann du die Überschriftenzeile mitnehmen
arr1 = Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row)
und für die letzte Programmzeile folgendes nehmen:
Workbooks.Add
ActiveSheet.Cells(1, 1).Resize(... und dann weiter wie im alten Code...)

Gruß Daniel

Anzeige
AW: Zelle Splitten
25.09.2015 19:37:32
Sepp
Hallo Christoph,
probier mal.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

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

Gruß Sepp

Anzeige
FormelVariante mit allgemeinen UDFs
26.09.2015 00:20:39
Luc:-?
Das sähe dann so aus, Christoph,
falls die beiden Spalten in der neuen Tabelle direkt nebeneinander stehen sollen:
 AB
1Überschrift1Überschrift2
224111674992209
3175111675331574
482111675681338
518111676663873
633111677576382
798111678900812
8157111679009409
940111679039641
1040111679040965
11169111680499788
12169111680511514
13169111680514517
14146111681549526
15235111682532836
16242111684158669
17248111684925330
18269111685101231
19269111685113923
20269111682636346
21318111686738978
22414111687092213
23351111687252372
24351111687256094
25351111687258394
26351111687261274
27450111687307513
28509111687403681
29A1:B28: {=VSplit(MTRANS(VSplit(VJoin(GLÄTTEN
30    (WIEDERHOLEN(" "&'Tab1'!A1:A20;LÄNGE('Tab1'!
31    F1:F20)-LÄNGE(WECHSELN('Tab1'!F1:F20;",";""))+
32    1)));;1))&" "&MTRANS(VSplit(VJoin('Tab1'!F1:
33    F20;",");","));;1)}
Die Formel ist eine mehrzellige MatrixFml über den ganzen Ergebnisbereich (hier: 2 Spalten & 28 Zeilen)!
Die beiden verwendeten UDFs findest du in aktueller Version in dieser Upload-Datei des Archivs!
Gruß, Luc :-?
Besser informiert mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige