Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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 umwandeln

Matrix umwandeln
Christian
Hallo Leute,
ich hab mich jetzt schon ein wenig probiert aber ich kriegs einfach nicht hin.
Ich habe eine Tabelle in der in Spalte A die 365 Tage des Jahres stehen und in der Zeile 1 jeweils 24 Stunden.
Somit habe ich auf eine Matrix 24x365 Werte stehen.
Ich hätte die einzelnen Werte gern untereinander stehen und das mit so wenig Aufwand wie möglich.
Am Ende habe ich dann eine Matrix in Spalte A die jeweilige Jahresstunde mit Datum und in Spalte B die 8760 Stundenwerte. Also die Matrix 2 x 8760.
Kann mir hierzu bitte jemand einen Tip geben wie ich das hinbekomm.
Danke schon mal!
Chrsitian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Matrix umwandeln
06.09.2011 09:24:03
Henrik
Hallo Christian,
so ganz habe ich dich nicht verstanden.
Stehen bei dir reine Zahlen drin und Datum?
Hier mal ein Beispiel. Einfach runter kopieren.
 KLM
1001.01.2011 00:001,000,00
1101.01.2011 01:001,001,00
1201.01.2011 02:001,002,00

ZelleFormel
L10=TAG(K10)
M10=STUNDE(K10)
K11=K10+1/24
L11=TAG(K11)
M11=STUNDE(K11)
K12=K11+1/24
L12=TAG(K12)
M12=STUNDE(K12)

Über Summewenn oder sverweis könntets du die Werte aus deiner bestehenden Matrix dann entsprechend umschreiben.
Gruß Henrik
Anzeige
AW: Matrix umwandeln
06.09.2011 09:26:47
Rudi
Hallo,

Sub Matrix()
Dim objM As Object, lngRow As Long, lngCol As Long
Dim arrM(), arrItems, lngI As Long, arrData
Set objM = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
arrData = Cells(1, 1).CurrentRegion
For lngRow = 2 To UBound(arrData)
For lngCol = 2 To UBound(arrData, 2)
objM(arrData(lngRow, 1) & "-" & arrData(1, lngCol)) = _
Array(arrData(lngRow, 1), arrData(1, lngCol), arrData(lngRow, lngCol))
Next
Next
arrItems = objM.items
ReDim arrM(1 To objM.Count + 1, 1 To 2)
arrM(1, 1) = "Datum"
arrM(1, 2) = "Wert"
For lngI = 0 To UBound(arrItems)
arrM(lngI + 2, 1) = arrItems(lngI)(0) + arrItems(lngI)(1)
arrM(lngI + 2, 2) = arrItems(lngI)(2)
Next
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrM), UBound(arrM, 2)) = arrM
.Columns(1).NumberFormat = "DD.MM.YYYY hh:mm"
End With
End Sub

Gruß
Rudi
Anzeige
Genial, wie immer :o) oT
06.09.2011 09:43:20
Matthias
AW: Matrix umwandeln
06.09.2011 10:03:20
Christian
Hallo Rudi,
Dacht mir schon ich hatte doch VB Kenntnisse auf null gesetzt. Und dann kommt der mit sowas...
Aber Copy - Paste machts möglich!
Funzt einwandfrei!
Rudi du bist ne Macht!
Recht herzlichen Danke!
Matrix umwandeln per Formel
06.09.2011 09:47:58
Rudi
Hallo,
so geht's auch:
 ABCDEFGHIJKLMNOPQRSTUVWXYZAAAB
1 00:0001:0002:0003:0004:0005:0006:0007:0008:0009:0010:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:0021:0022:0023:00 ZeitWert
206.09.20112223242526272829210211212213214215216217218219220221222223224225 06.09.2011 00:0022
307.09.20113233343536373839310311312313314315316317318319320321322323324325 06.09.2011 01:0023
408.09.20114243444546474849410411412413414415416417418419420421422423424425 06.09.2011 02:0024
509.09.20115253545556575859510511512513514515516517518519520521522523524525 06.09.2011 03:0025
610.09.20116263646566676869610611612613614615616617618619620621622623624625 06.09.2011 04:0026
711.09.20117273747576777879710711712713714715716717718719720721722723724725 06.09.2011 05:0027
812.09.20118283848586878889810811812813814815816817818819820821822823824825 06.09.2011 06:0028
913.09.20119293949596979899910911912913914915916917918919920921922923924925 06.09.2011 07:0029
1014.09.20111021031041051061071081091010101110121013101410151016101710181019102010211022102310241025 06.09.2011 08:00210

ZelleFormel
AA2=INDEX(A:A;ABRUNDEN((ZEILE(A1)-1)/24;0)+2)+INDEX($B$1:$Y$1;REST((ZEILE()-2);24)+1)
AB2=INDEX($B$2:$Y$10;ABRUNDEN((ZEILE(A1)-1)/24;0)+1;REST((ZEILE()-2);24)+1)
AA3=INDEX(A:A;ABRUNDEN((ZEILE(A2)-1)/24;0)+2)+INDEX($B$1:$Y$1;REST((ZEILE()-2);24)+1)
AB3=INDEX($B$2:$Y$10;ABRUNDEN((ZEILE(A2)-1)/24;0)+1;REST((ZEILE()-2);24)+1)

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige