Makro-Programmierung HILFE ;)

  • #1
B

BAW

Neues Mitglied
Themenersteller
Dabei seit
16.02.2005
Beiträge
1
Reaktionspunkte
0
Hallo!

Da hier ja ganz ausgeklügelte Köpfe immer wieder guten Tipps geben, poste ich mal mein Problemchen in der Hoffnung auf Hilfe.

Ich habe hier eine Datei, die so aussieht:

Also Spalte A sind die Daten (Datums?!) vom ganzen Jahr 2004 - und in den spalten O bis AL gibts zu jeder Stunde (also 1-24) einen Preis. Jetzt versuche ich mit einem Makro die Dateien (am vernünftigsten natürlich durch Schleifen wegen der Menge der Daten) in ein anderes Format zu bekommen, und zwar dass die so aussehen:

Also Spalte A erst mal das Datum eines Tages - dann Spalte B die Stunden (also wieder 1- 24) und in Spalte C den dazugehörigen Preis. Hab auch schon versucht meine nicht-existierenden Programmierkenntnisse zu überwinden und mich durch die Makro-Hilfe und durch mehrere Hilfe-Foren zu kämpfen... aber für nen Laien echt schwer.

Hinbekommen hab ich bis jetzt das:

Code:
Sub Makro1()

Dim Datum As Date
Dim Zeit
Dim Preis
Dim Zeile
Dim Spalte

Zeile = 4
Spalte = 1
Zeit = 1
ueberschr1 = Tag
ueberschr2 = Stunde
ueberschr3 = Preis
 
Datum = Cells(Zeile, Spalte)
Preis = Cells(Zeile, Spalte + 14)


Sheets(EEX_Daten).Select

Cells(1, 1) = ueberschr1
Cells(1, 2) = ueberschr2
Cells(1, 3) = ueberschr3
Cells(2, 1) = Datum
Cells(2, 3) = Preis
Cells(2, 2) = Zeit
     
       Max = 24
       Do
            Zeit = Zeit + 1
            Cells(1 + Zeit, 2) = Zeit
                      
       Loop While Zeit < Max
       
 

       For X = 14 To 39
        
       Preis = Cells(Zeile + 1, Spalte + X)
               Cells(1 + Zeit, 3) = Preis
                  
       Next

 
End Sub

Wobei die letzte Schleife wohl Müll ist, weil es nicht so funktioniert wie sie gemeint war ;)


Also hoffe auf hilfe. Danke schon mal im Voraus.
 
  • #2
Hi BAW,

hab dir mal einen Makro zusammengestellt.

Funktion:
Es wird ein neues Tabellenblatt angelegt. Überschriften Datum, Stunde, Preis werden erstellt. Dann werden für alle Zeilen des Quellblattes die entsprechenden Werte auf dem Zielblatt eingetragen.

Gruß Matjes :)

Code:
Sub BlattKopierenUndSpaltenAusschneiden()

 ->Blattbeschreibung Quelle
  Const c_QSP_Datum = 1
  Const c_QSP_PreisStd01 = 15
  Const c_QErsteZeileWerte = 4
  
 ->Blattbeschreibung Ziel
  Const c_ZSPDatum = 1
  Const c_ZSPStd = c_ZSPDatum + 1
  Const c_ZSPPreis = c_ZSPStd + 1
  Const c_ZZUeberschrift = 1
  Const c_ZZErsteZeileWerte = c_ZZUeberschrift + 1
  
  Dim ws As Worksheet, ws2 As Worksheet, zq As Long, zz As Long, x As Long
  
  Set ws = ActiveSheet
 ->actives Blatt kopieren
  Worksheets.Add After:=ws
  Set ws2 = ActiveSheet
  
 ->Überschriften
  ws2.Cells(c_ZZUeberschrift, c_ZSPDatum).Value = Datum
  ws2.Cells(c_ZZUeberschrift, c_ZSPDatum).Font.Bold = True
  ws2.Cells(c_ZZUeberschrift, c_ZSPStd).Value = Stunde
  ws2.Cells(c_ZZUeberschrift, c_ZSPStd).Font.Bold = True
  ws2.Cells(c_ZZUeberschrift, c_ZSPPreis).Value = Preis
  ws2.Cells(c_ZZUeberschrift, c_ZSPPreis).Font.Bold = True

  zq = c_QErsteZeileWerte->erste  Quelle-Zeile
  zz = c_ZZErsteZeileWerte->erste Ziel-Zeile
 ->über alle Quellzeilen
  Do While ws.Cells(zq, c_QSP_Datum).Value <> 
    For x = 1 To 24
      ws2.Cells(zz, c_ZSPDatum).Value = ws.Cells(zq, c_ZSPDatum).Value
      ws2.Cells(zz, c_ZSPStd).Value = x
      ws2.Cells(zz, c_ZSPPreis).Value = ws.Cells(zq, c_QSP_PreisStd01 - 1 + x).Value
      zz = zz + 1->nächste Ziel-Zeile
    Next x
    zz = zz + 1->Leerzeile im Ziel
    zq = zq + 1->nächste Quelle-Zeile
  Loop
  Set ws = Nothing: Set ws2 = Nothing
End Sub
 
Thema:

Makro-Programmierung HILFE ;)

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben