Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array Splitten Transponse Ausgabe in 2 Spalten

Array Splitten Transponse Ausgabe in 2 Spalten
23.04.2009 10:44:32
chris
Hallo VBA experten,
ich habe eine frage und bitte um eure Hilfe.
Ich komme alleine nicht weiter:(
Ich habe eine Tabelle1. In Spalte 1 Stehen z.b Werte untereinander.
27>27
17>17
6>6
17>1
usw...
diese möchte ich gerne in ein Array übernehmen und dann in Tabelle2 ausgeben.
In tabelle 2 sollen die Werte aber nicht in einer spalte ausgegeben werden sondern in 2.
trennzeichen ist ">"
ich habe es schon so versucht aber es klappt nicht und ich weiß nicht weiter.
Option Explicit

Sub diagramm()
Dim lz_erster As Integer
Dim lz_letzter As Integer
Dim Daten_erster
Dim Daten_letzter
Dim cb
lz_erster = Worksheets("Analyse").Cells(Rows.Count, 1).End(xlUp).Row
lz_letzter = Worksheets("Analyse").Cells(Rows.Count, 5).End(xlUp).Row
Daten_erster = WorksheetFunction.Transpose(Range("A4:A" & lz_erster))
End Sub


vielen Dank für eure Hilfe.
gruß Chris

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array Splitten Transponse Ausgabe in 2 Spalten
23.04.2009 11:19:56
Hajo_Zi
Hallo Chris,
Excel hat auch einen Makrorecorder. Schreibe Sie erst rein und dann Daten Text in Spalten.

AW: Array Splitten Transponse Ausgabe in 2 Spalten
23.04.2009 11:21:29
chris
Danke Hajo.
So habe ich es gemacht.
Ist zwar etwas umständlich weil ich dann die Daten aus tabelle 1 in tabelle 2 verschieben muss weil beim TextinSpalten es nicht möglich ist die Ausgabe in eine andere Tabelle zumachen.
Danke trotzdem
Anzeige
AW: Array Ausgabe in 2 Spalten - Splitten
23.04.2009 11:56:33
Erich
Hi Chris,
hier eine Alternative:

Sub Splitten()
Dim lz_erster As Long   ' besser nicht integer
Dim lz_letzter As Long
Dim zz As Long, pp As Long, arrA, arrB
With Worksheets("Tabelle1")                   ' Lesen in Tab1, Sp. A
lz_erster = .Cells(.Rows.Count, 1).End(xlUp).Row
arrA = Application.Transpose(.Cells(1, 1).Resize(lz_erster))
End With
ReDim arrB(1 To lz_erster, 1 To 2)
For zz = 1 To lz_erster
pp = InStr(arrA(zz), ">")
If pp = 0 Then pp = Len(arrA(zz))
arrB(zz, 1) = Left(arrA(zz), pp - 1)
arrB(zz, 2) = Right(arrA(zz), Len(arrA(zz)) - pp)
Next zz
With Worksheets("Tabelle2")                  ' Ausgeben in Tab2, Sp. 5+6
lz_letzter = .Cells(.Rows.Count, 5).End(xlUp).Row
.Cells(lz_letzter + 1, 5).Resize(lz_erster, 2) = arrB
End With
End Sub

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

Anzeige
AW: Array in 2 Spalten splitten
23.04.2009 13:11:59
Erich
Hi Chris,
in meiner Routine war noch ein Fehler - wenn im Text kein ">" vorkommt, fehlte ein Zeichen.
Hier eine neue Version, in der ich Rudis "Split" aufgenommen habe:

Sub Splitten2()
Dim lz_erster As Long   ' besser nicht integer
Dim lz_letzter As Long
Dim zz As Long, pp As Long, arrA, arrB, arrS
With Worksheets("Tabelle1")                   ' Lesen in Tab1, Sp. A
lz_erster = .Cells(.Rows.Count, 1).End(xlUp).Row
arrA = Application.Transpose(.Cells(1, 1).Resize(lz_erster))
End With
ReDim arrB(1 To lz_erster, 1 To 2)
For zz = 1 To lz_erster
arrS = Split(arrA(zz), ">")
arrB(zz, 1) = arrS(0)
If UBound(arrS) > 0 Then arrB(zz, 2) = arrS(1)
Next zz
With Worksheets("Tabelle2")                  ' Ausgeben in Tab2, Sp. 5+6
lz_letzter = .Cells(.Rows.Count, 5).End(xlUp).Row
.Cells(lz_letzter + 1, 5).Resize(lz_erster, 2) = arrB
End With
End Sub

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

Anzeige
AW: Array in 2 Spalten splitten
23.04.2009 15:45:35
chris
Danke euch beiden vielmals für eure VBA Antworten.
Habs vorhin nicht mehr geschafft anzuschauen.
Werde ich gleich morgen machen.
Danke und schönen Tag noch !
gruß Chris
AW: Array in 2 Spalten mit TextToColumns
23.04.2009 17:01:29
Erich
Hi Chris,
hier hab ich mal Hajos Vorschlag umgesetzt. Sieht auch ganz gut aus:

Sub SplittenT()
Dim lngQ As Long, rngQ As Range
With Worksheets("Tabelle1")                     ' Quellbereich in Tab1, Sp. A
lngQ = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngQ = .Cells(1, 1).Resize(lngQ)
End With
With Worksheets("Tabelle2")
With .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Resize(lngQ)
.Value = rngQ.Value           ' Ausgeben in Tab2, Sp. 5, dann aufteilen
.TextToColumns Destination:=.Cells(1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
Other:=True, OtherChar:=">", _
FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End With
End With
End Sub

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

Anzeige
AW: Array in 2 Spalten mit TextToColumns
23.04.2009 17:13:17
chris
Hallo Erich,
danke noch einmal.
wenn ich morgen wieder dazu komme schau ich mir gleich alle Vorschläge mal an.
Ihr seid einfach gut :)
Danke und schönen Abend
AW: Array Splitten Transponse Ausgabe in 2 Spalten
23.04.2009 12:13:31
Rudi
Hallo,

Sub splitten()
Dim arrTmp, arrSplit, i As Long
With Sheets(1)
arrTmp = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
ReDim arrSplit(1 To UBound(arrTmp), 1 To 2)
For i = 1 To UBound(arrTmp)
arrSplit(i, 1) = Split(arrTmp(i, 1), ">")(0)
arrSplit(i, 2) = Split(arrTmp(i, 1), ">")(1)
Next
Sheets(2).Cells(1, 1).Resize(UBound(arrTmp), 2) = arrSplit
End Sub


Gruß
Rudi

Anzeige
AW: Array Splitten Transponse Ausgabe in 2 Spalten
24.04.2009 08:16:57
chris
Hallo Rudi,
habe mich für deine version entschieden.
Weiß nicht warum aber läuft gut :)
Danke auch den anderen Helfern !
gruß Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige