Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelleninhalt untereinander

Zelleninhalt untereinander
02.06.2008 09:32:16
Günter
Guten Morgen,
kann mir jemand sagen, wie ich folgendes in VBA hinbekomme:
Habe 4 Spalten.
Nun habe ich in Spalte A ab Zelle A1 bis Axx(variabel, bis zu 15.000) Zahlen stehen.
Jeder Zahlenwert der Zelle wird mit einem Semikolon beendet (auch wenn nur 1 Zahl).
Wie bekomme ich es hin, dass bei mehr als einer Zahl die Zeile sooft kopiert und eingefügt wird,
wie Zahlen in der Zellen stehen?
Hier eine Hilfe zu meiner Erklärung.
https://www.herber.de/bbs/user/52752.xls
Schönen Gruß
Günter

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt untereinander
02.06.2008 09:59:44
Rudi
Hallo,
schreibt die Daten in Tabelle2:

Sub ttx()
Dim arrTmp1, arrTmp2, arrTmp3()
Dim i As Long, j As Integer, n As Long
ReDim arrTmp3(1 To 4, 1 To 1)
arrTmp1 = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 4))
For i = 1 To UBound(arrTmp1)
arrTmp2 = Split(Left(arrTmp1(i, 4), Len(arrTmp1(i, 4)) - 1), ";")
For j = 0 To UBound(arrTmp2)
n = n + 1
ReDim Preserve arrTmp3(1 To 4, 1 To n)
arrTmp3(1, n) = arrTmp1(i, 1)
arrTmp3(2, n) = arrTmp1(i, 2)
arrTmp3(3, n) = arrTmp1(i, 3)
arrTmp3(4, n) = arrTmp2(j) & ";"
Next j
Next i
Sheets(2).Cells(2, 1).Resize(n, 4) = WorksheetFunction.Transpose(arrTmp3)
End Sub


Gruß
Rudi

Anzeige
AW: Zelleninhalt untereinander
02.06.2008 10:21:00
Günter
Hallo Herr Maintaire,
danke für die schnelle Hilfe.
Werde schnell testen...
Gruß
Günter

AW: Zelleninhalt untereinander
02.06.2008 10:30:00
Günter
Hallo Herr Maintaire,
bekomme die Meldung:
Laufzeitfehler '13': Typen unverträglich.
Diese Meldung verweist auf die folgende Zeile:
Sheets(2).Cells(2, 1).Resize(n, 4) = WorksheetFunction.Transpose(arrTmp3)
Gruß
Günter

AW: Zelleninhalt untereinander
02.06.2008 10:27:26
Erich
Hallo Günter,
noch eine Verseion (schreibt auch in das 2. Blatt):

Option Explicit
Sub Unter()
Dim lngZ As Long, arrQ, arrE(), lngM As Long, zz As Long, arrS, lngE As Long
Dim pp As Long, ii As Long
lngZ = Cells(Rows.Count, 4).End(xlUp).Row
arrQ = Application.Transpose(Range(Cells(2, 1), Cells(lngZ, 4)).Value)
lngM = 2 * lngZ
ReDim arrE(1 To 4, 1 To lngM)
For zz = 1 To lngZ - 1
arrS = Split(arrQ(4, zz), ";")
For pp = 0 To UBound(arrS) - 1
lngE = lngE + 1
If lngE > lngM Then
lngM = lngM + lngZ
ReDim Preserve arrE(1 To 4, 1 To lngM)
End If
For ii = 1 To 3
arrE(ii, lngE) = arrQ(ii, zz)
Next ii
arrE(4, lngE) = arrS(pp) & ";"
Next pp
Next zz
ReDim Preserve arrE(1 To 4, 1 To lngE)
Sheets(2).Cells(2, 1).Resize(lngE, 4) = Application.Transpose(arrE)
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Zelleninhalt untereinander
02.06.2008 11:14:00
Günter
Hallo Herr Maintaire,
bekomme die Meldung:
Laufzeitfehler '13': Typen unverträglich.
Diese Meldung verweist auf die folgende Zeile:
Sheets(2).Cells(2, 1).Resize(n, 4) = WorksheetFunction.Transpose(arrTmp3)
Gruß
Günter

AW: Zelleninhalt untereinander
02.06.2008 11:21:20
Günter
Hallo Herr Maintaire,
hat jetzt geklappt.
Waren einfach zu viele Datensätze.
Nochmals vielen Dank.
Gruß
Günter

AW: Zelleninhalt untereinander
02.06.2008 11:48:00
Günter
Hallo Herr Maintaire,
gibt es auch eine Möglichkeit, wenn die Zeilen 65535 (Limit) überschriften hat,
dass eine der Rest auf weitere Arbeitsblätter geschrieben wird?
Gruß
Günter

Anzeige
AW: Zelleninhalt untereinander
02.06.2008 12:29:00
Rudi
Hallo,
kein Problem. Daten werden auf neue Tabellenblätter geschrieben:

Sub ttx()
Dim arrTmp1, arrTmp2, arrTmp3()
Dim i As Long, j As Integer, n As Long, wks As Worksheet
ReDim arrTmp3(1 To 4, 1 To 1)
arrTmp1 = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 4))
For i = 1 To UBound(arrTmp1)
arrTmp2 = Split(Left(arrTmp1(i, 4), Len(arrTmp1(i, 4)) - 1), ";")
For j = 0 To UBound(arrTmp2)
n = n + 1
ReDim Preserve arrTmp3(1 To 4, 1 To n)
arrTmp3(1, n) = arrTmp1(i, 1)
arrTmp3(2, n) = arrTmp1(i, 2)
arrTmp3(3, n) = arrTmp1(i, 3)
arrTmp3(4, n) = arrTmp2(j) & ";"
Next j
If n = Rows.Count - 1 Then
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 4) = WorksheetFunction.Transpose(arrTmp3)
n = 0
ReDim arrTmp3(1 To 4, 1 To 1)
End If
Next i
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 4) = WorksheetFunction.Transpose(arrTmp3)
End Sub


Gruß
Rudi
P.S. Im Forum gilt ausschließlich das Du

Anzeige
AW: Zelleninhalt untereinander
02.06.2008 12:35:52
Günter
Hallo Rudi,
sorry.
Danke für Deine Mühe. Läuft wie ein Lottchen und auch
sehr - sehr schnell.
Ich schäme jetzt schnell, denn ich habe noch eine Bitte:
Ich habe nicht nur 4 belegte Spalten. Im ganzen sind es
20 Spalten.
Könnte Du es so schalten, dass die ganze Zeile immer mitgenommen
wird? -Wegen restlichen Spalten, die mir auf den weiteren Blätter fehlen...
Aus dem heißen Frankfurt
Günter

AW: Zelleninhalt untereinander
02.06.2008 12:48:48
Günter
Hallo Rudi,
sorry.
Danke für Deine Mühe. Läuft wie ein Lottchen und auch
sehr - sehr schnell.
Ich schäme jetzt schnell, denn ich habe noch eine Bitte:
Ich habe nicht nur 4 belegte Spalten. Im ganzen sind es
20 Spalten.
Könnte Du es so schalten, dass die ganze Zeile immer mitgenommen
wird? -Wegen restlichen Spalten, die mir auf den weiteren Blätter fehlen...
Aus dem heißen Frankfurt
Günter

Anzeige
AW: Zelleninhalt untereinander
02.06.2008 12:55:00
Rudi
Hallo,
warum schreibst du das nicht gleich?
Wie sieht ein kompletter Datensatz aus? Ist der mit den Ziffern der letzte oder bleibt es der 4.? Immer exakt 20 Spalten?
Gruß
Rudi

AW: Zelleninhalt untereinander
02.06.2008 13:01:00
Günter
Hallo Rudi,
ja, es bliebe bei der 4. und die
20 Spalten blieben exakt 20.
Danke
Günter

AW: Zelleninhalt untereinander
02.06.2008 13:04:00
Rudi

Sub ttx()
Dim arrTmp1, arrTmp2, arrTmp3()
Dim i As Long, j As Integer, k As Integer, n As Long, wks As Worksheet
ReDim arrTmp3(1 To 4, 1 To 1)
Application.ScreenUpdating = False
arrTmp1 = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 19))
For i = 1 To UBound(arrTmp1)
arrTmp2 = Split(Left(arrTmp1(i, 4), Len(arrTmp1(i, 4)) - 1), ";")
For j = 0 To UBound(arrTmp2)
n = n + 1
ReDim Preserve arrTmp3(1 To 4, 1 To n)
For k = 1 To 3
arrTmp3(k, n) = arrTmp1(i, k)
Next k
arrTmp3(4, n) = arrTmp2(j) & ";"
For k = 5 To 20
arrTmp3(k, n) = arrTmp1(i, k)
Next k
Next j
If n = Rows.Count - 1 Then
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 20) = WorksheetFunction.Transpose(arrTmp3)
n = 0
ReDim arrTmp3(1 To 4, 1 To 1)
End If
Next i
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 20) = WorksheetFunction.Transpose(arrTmp3)
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Zelleninhalt untereinander
02.06.2008 13:36:00
Günter
Hallo Rudi,
vielen Dank für Deine Mühe.
Habe noch die Fehlermeldung:
Index außerhalb des gültigen Bereichs (Fehler 9).
Veweist auf die Zeile mit:
For k = 5 To 20
arrTmp3(k, n) = arrTmp1(i, k) hier, diese Zeile
Next k
Gruß
Günter

AW: Zelleninhalt untereinander
02.06.2008 13:55:37
Rudi
mein Fehler.

Sub ttx()
Dim arrTmp1, arrTmp2, arrTmp3()
Dim i As Long, j As Integer, k As Integer, n As Long, wks As Worksheet
ReDim arrTmp3(1 To 20, 1 To 1)
Application.ScreenUpdating = False
arrTmp1 = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 19))
For i = 1 To UBound(arrTmp1)
arrTmp2 = Split(Left(arrTmp1(i, 4), Len(arrTmp1(i, 4)) - 1), ";")
For j = 0 To UBound(arrTmp2)
n = n + 1
ReDim Preserve arrTmp3(1 To 20, 1 To n)
For k = 1 To 3
arrTmp3(k, n) = arrTmp1(i, k)
Next k
arrTmp3(4, n) = arrTmp2(j) & ";"
For k = 5 To 20
arrTmp3(k, n) = arrTmp1(i, k)
Next k
Next j
If n = Rows.Count - 1 Then
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 20) = WorksheetFunction.Transpose(arrTmp3)
n = 0
ReDim arrTmp3(1 To 20, 1 To 1)
End If
Next i
Set wks = Worksheets.Add
wks.Cells(2, 1).Resize(n, 20) = WorksheetFunction.Transpose(arrTmp3)
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Zelleninhalt untereinander
02.06.2008 14:27:12
Günter
Hallo Rudi,
vielen, vielen Dank.
Gruß
Günter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige