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

Forumthread: Von Zeilen zu Spalten

Von Zeilen zu Spalten
08.10.2013 14:18:05
Leo
Hallo,
ich bin recht unerfahren mit vba und hoffe hier etwas Hilfe zu bekommen.
Problemstellung:
Aus einem großen, chronologisch sortierten Datensatz von einem Jahr (ca. 80000 Zeilen, jeder Tag hat ca. 180 Zeilen),so sieht eine Zeile aus:
03.06.2012 10:54:40 / 840 / 1247 / 343 (/=neue Spalte)
sollen bestimmte Tage (z.B. alle Montage) ausgewählt und in ein anderes Tabellenblatt kopiert werden, allerdings nicht untereinander, sondern nebeneinander.
Das mit den Montagen raussuchen, habe ich geschafft, allerdings werden diese untereinander geschrieben. Da jeder Montag von 00:00 bis 23:59 geht, habe ich gedacht, man könnte jeweils diesen Block nebeneinanderschreiben.
Könnte mir jemand bei dem Code helfen?
Das habe ich bisher:
Sub KopierenZwischen0und24Uhr()
Dim fAuslesen() As Variant
Dim fÜbergabe() As Variant
Dim i As Long, j As Long
With Sheets("Tabelle2")
fAuslesen = Range(.Range("A2"), .Range("A2").End(xlDown)).Resize(, 4)
End With
ReDim fÜbergabe(1 To UBound(fAuslesen), 1 To 4)
For i = 1 To UBound(fAuslesen)
If Hour(fAuslesen(i, 1)) >= 0 And Hour(fAuslesen(i, 1)) 

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Von Zeilen zu Spalten
09.10.2013 00:25:17
Franc
Wie immer vorher Daten sichern. ^^
Wenn im Array fÜbergabe die Daten auch erstmal "untereinander" stehen kannst du es mit
fÜbergabe = Application.WorksheetFunction.Transpose(fÜbergabe)
transponieren.
Dann noch
Sheets("Tabelle3").[a1].Resize(4, j) = fÜbergabe
und es sollte so sein wie du es willst.

Anzeige
AW: Von Zeilen zu Spalten
09.10.2013 15:05:57
Leo
Hallo Franc,
dein Vorschlag klappt zwar, allerdings will ich die Liste nicht transponieren, sondern jeden Tag in eine neue Spalte setzen.
Ich hänge mal noch die Excel-Datei an, dann wird es besser verständlich.
In Tabelle3 hab ich das Ergebnis mal angedeutet, die Tage sollen nebeneinander stehen.
https://www.herber.de/bbs/user/87592.xlsm
Hast du dafür einen Vorschlag?
Gruß Leo

Anzeige
AW: Von Zeilen zu Spalten
10.10.2013 00:25:01
Franc
Musst du noch mal auf Richtigkeit prüfen - hatte dazu grad keine Lust mehr. (siehe Uhrzeit + Frühschicht ;-) )
Sub KopierenZwischen0und24Uhr()
Dim fAuslesen() As Variant, fÜbergabe() As Variant
Dim i As Long, j As Long, strTag As String, dSpalte As Double
With Sheets("Tabelle2")
fAuslesen = Range(.Range("A2"), .Range("A2").End(xlDown)).Resize(, 4)
End With
ReDim fÜbergabe(1 To UBound(fAuslesen), 1 To 4)
For i = 1 To UBound(fAuslesen)
If Hour(fAuslesen(i, 1)) >= 0 And Hour(fAuslesen(i, 1))  Left(fAuslesen(i, 1), 10) Then
' wenn es ein anderes Datum ist das neue merken
strTag = Left(fAuslesen(i, 1), 10)
' Krücke damit er auch in Spalte 1 anfängt ;-)
If Cells(1, Columns.Count).End(xlToLeft).Column + 1 = 2 Then
dSpalte = 1
Else
' danach immer die nächste freie Spalte nehmen
dSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
End If
'Im array stehen nur Daten vom selben Tag und das fügen ein
Sheets("Tabelle3").Cells(1, dSpalte).Resize(j, 4) = fÜbergabe
j = 0
Erase fÜbergabe
ReDim fÜbergabe(1 To UBound(fAuslesen), 1 To 4)
End If
j = j + 1
fÜbergabe(j, 1) = fAuslesen(i, 1)
fÜbergabe(j, 2) = fAuslesen(i, 2)
fÜbergabe(j, 3) = fAuslesen(i, 3)
fÜbergabe(j, 4) = fAuslesen(i, 4)
End If
Next i
Sheets("Tabelle3").Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column + 1).Resize(j, 4) = fÜ _
bergabe
End Sub

Anzeige
AW: Von Zeilen zu Spalten
10.10.2013 08:42:46
Leo
Du bist der beste Franc!
Funktioniert bestens! Wenn ich könnte, würde ich dir ein Bier ausgeben!
Vielen Dank für dein Engagement! Ich wünsche dir noch eine angenehme restliche Woche!
Gruß Leo
;

Forumthreads zu verwandten Themen

Anzeige
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