Microsoft Excel

Herbers Excel/VBA-Archiv

VBA MACRO

Betrifft: VBA MACRO von: Julia
Geschrieben am: 04.11.2020 09:40:12

Liebes Forum,

kann mir jemand mit folgendem Problem Helfen.

Ich habe eine Datei, die so aussieht wie die angehängte, nur länger
https://www.herber.de/bbs/user/141300.xlsx

Jede Spalte entspricht einer Stunde und es gibt 8760 Stunden im Jahr- sprich in meinem Fall 8760 Spalten, wobei nur die spalten zu den Zeiten die Sonne geschienen hat werte haben, daher die Lücken.

Zudem habe ich 20 Werte pro Stunde, sprich 20 Zeilen.

Ich würde gerne zwei Dinge tun.
1. Das Format "umdrehen"
Anstelle von 8760 Spalten hätte ich gerne 8760 Zeilen.
und anstatt meiner 20 Zeilen hätte ich gerne 20 spalten.
Da ich viele solcher Tabellen habe dachte ich an ein VBA Makro? Ist das Mögblich

2. Alle 24 Stunden einen Mittelwert (dann pro Spalte) bilden. Aus dann jeder Spalte hätte ich gerne quasi den Tageswert, sprich 24 Stunden zusammengefasst. Das wären dann 20 mal 365 Tageswerte

Wäre das möglich?
Ich würde mich wahnsinnig freuen, vielen Dank für die Hilfe
Julia

Betrifft: AW: VBA MACRO
von: Daniel
Geschrieben am: 04.11.2020 09:57:53

HI

um solche Tabellen zu kippen, kannst du sie kopieren und an andere Stelle mit Inhalte einfügen - Transponieren (das Symbol mit dem stehenden und liegenden Rechteck) verwenden

einen Mittelwert über 24 Zeilen, der auch beim nach unten ziehen immer um 24 Zeilen weiter springt, bekommst du so:

=Mittelwert(Bereich.Verschieben(A1;1+(Zeile(A1)-1)*24;0;24;1))
oder
=Mittelwert(Index(A:A;1+(Zeile(A1)-1)*24):Index(A:A;1+Zeile(A1)*24-1))

wobei die 1+ die Zeilennummer ist, in der die Daten beginnen und ggf angepasst werden muss.

Gruß Daniel

Betrifft: AW: VBA MACRO
von: ralf_b
Geschrieben am: 04.11.2020 10:01:52

für den ersten Schritt kannst du das hier versuchen. Es ist nichts Anderes als das was du mittels Tabelle kopieren, neues Blatt erstellen, Tabelle einfügen mittels transponieren, auch von Hand machen könntest. Aufgrund der mageren Beispieldatei, kann ich nicht garantieren das es auch 100%ig funktioniert.

Sub tabelletransponieren()

    ActiveSheet.UsedRange.Copy ' kompleter, benutzten bereich des Blattes kopieren
    Sheets.Add After:=ActiveSheet 'neues Blattt erzeugen
    Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True  'Einfügen 
End Sub