Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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

Matrix transponieren

Matrix transponieren
04.02.2013 15:43:10
Moritz
Hallo,
ich habe folgendes Problems, ich habe eine Wetterdatei in dem folgenden Format
Datum/Zeit 00:00 00:30 01:00 01:30 .... 23:30
1.1.2012 1.2 1.3 1.7 2.0 .... 3.0
2.1.2012 2.2 2.4 2.5 2.4 .... 3.2
.
.
.
31.12.2012 1.1 1.3 1.4 1.4 ..... 2.0
Die Einträge in der Matrix sind jeweil Temperaturwerte. Jetzt würde ich gerne die Matrix in die folgende Format umwandeln, da ich die Werte unterander brauche für ein Simulationsprogramm:
Datum Zeit Temperatur
1.1.2012 00:00 1.2
1.1.2012 00:30 1.3
1.1.2012 01:00 1.7
. . .
. . .
. . .
31.12.2012 23:30 2.0
Mit Matrixtransponieren könnte ich so nur einzelne Tage umwanden, aber das wäre mir einwenig viel Aufwand, das für jeden Tag im Jahr zu machen. Hat da jemand eine Idee wie das umsetzen kann?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix transponieren
04.02.2013 15:56:55
Klaus
Hi Moritz,
würd ich eben ein Script drüber jagen. Da du keine Mustertabelle hochgeladen hast, musst du die Variablen selbst anpassen:
Sub TransMatrix()
Dim wksOld As Worksheet
Dim wksNew As Worksheet
Dim lOldRowFirst As Long
Dim iOldColFirst As Integer
Set wksOld = Sheets("MatrixAlt")      'Hier stehen die alten Werte
Set wksNew = Sheets("Transponiert")   'Hier kommen die neuen Werte hin
lOldRowFirst = 1    'in Zeile 1 stehen die Uhrzeiten
iOldColFirst = 1    'in Spalte A stehen die Datums
Dim lOldRowlast As Long
Dim iOldColLast As Long
Dim lNewRowLast As Long
Dim rBereich As Range
With wksOld
'letzte Zeile und Spalte
lOldRowlast = .Cells(.Rows.Count, iOldColFirst).End(xlUp).Row
iOldColLast = .Cells(lOldRowFirst, .Columns.Count).End(xlToLeft).Column
'Temperaturen durchgehen
For Each rBereich In .Range(.Cells(lOldRowFirst + 1, iOldColFirst + 1), .Cells(lOldRowlast,  _
iOldColLast))
lNewRowLast = wksNew.Cells(wksNew.Rows.Count, 1).End(xlUp).Row + 1
'Temperaturen eintragen
wksNew.Cells(lNewRowLast, 1).Value = .Cells(rBereich.Row, iOldColFirst)
wksNew.Cells(lNewRowLast, 2).Value = .Cells(lOldRowFirst, rBereich.Column)
wksNew.Cells(lNewRowLast, 3).Value = rBereich.Value
Next rBereich
End With
End Sub
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige