Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
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)) 

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.

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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige