Daten von Vormonat in bestimmte Zelle | Herbers Excel-Forum

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Betrifft: Daten von Vormonat in bestimmte Zelle
von: Chris
Geschrieben am: 10.11.2009 10:15:02

Hallo zusammen,
habe folgendes Problemchen. Ich benutze einen Button, um bestimmte Daten aus einem Quellsheet in ein Zielsheet (Sheet1) zu kopieren. Das hinterlegte Makro sucht dabei im Quellsheet (Sheet2) in Zeile 12 nach Datumsangaben vom heutigen Monat bis zum Monat in einem Jahr, also 12 Spalten. Diese 12 Monate werden ins Zielsheet kopiert sowie verschiedene Daten, die unter den Monatsnamen im Quellsheet stehen (siehe Code unten mit Beispiel Demand und Stock).
Nun ist es so, dass ich für den Stock auch noch die Daten vom Vormonat brauche. Die Daten für den Stock werden momentan für die Monate Nov 09 bis Nov 10 in den Bereich F9:R9 geschrieben.
Die Daten für den Stock vom Monat Oktober hätte ich gerne in der Zelle E9 stehen.
Sobald dann Dezember 09 ist, soll dann in E9 der Stock für Nov 09 geschrieben werden?
Jemand eine Idee, den Code zu erweitern?

Private Sub CommandButton1_Click()
Dim StartDate As Variant
Dim EndDate As Variant
Dim NewCol As Variant
Dim LastCol As Variant
Dim ColCount As Variant
Dim MyDate As Variant
Dim DestDates As Variant
Dim Dat As Variant
Dim StartCol As Integer
Dim MonthCount As Integer
Dim YearCount As Integer
StartDate = DateSerial(Year(Date), Month(Date), 1)  'Heutiger Monat, mit dem 1. Tag des Monats
EndDate = DateAdd("yyyy", 1, Date)  ' 1 Jahr später
 
With Sheets("Sheet1")    'With bis End With fügt die aktuellen 12 Monate im Zielsheet ein
    Set DestDates = .Range("F7:R7") 'Zielzellen für Monatsnamen                                  _
 _
    
    StartCol = DestDates.Column     'Spalte 1 in DestDates
    MonthCount = Month(StartDate)   'heutiger Monat ist Monat Nr. 1
    YearCount = Year(StartDate)     'heutiges Jahr ist Jahr Nr. 1
    For ColCount = StartCol To (StartCol + 12)  '12 Spalten=1Jahr
        MyDate = DateSerial(YearCount, MonthCount, 1) 'startet bei erstem Datum
            .Cells(7, ColCount).NumberFormat = "mmm-yy"
            .Cells(7, ColCount) = MyDate    'Datum wird in zeile 7 geschrieben
            If MonthCount = 12 Then         'Falls Monat 12 erreicht
                MonthCount = 1              'wird Monatsnr. wieder 1
                YearCount = YearCount + 1   'und neues Jahr wird addiert
            Else
                MonthCount = MonthCount + 1 'falls Monat nicht 12, dann immer eine Monatsnr.  _
addieren
            End If
    Next ColCount
End With
 
NewCol = 5 'column E
'ab hier werden Daten unter den Monatsnamen eingefügt:
Dim Demand As Integer
Dim Stock As Integer
With Sheets("Sheets2")   'Im Quell-Sheet "Sheet2" werden...
    LastCol = .Cells(12, Columns.Count).End(xlToLeft).Column    'Spalten in Reihe 12 überprüft ( _
 _
in Spalte 12 stehen die Monatsnamen)
    For ColCount = 3 To LastCol
        If IsDate(.Cells(12, ColCount)) Then    'falls heutiger Monat in Zeile 12 gefunden wird
            MyDate = .Cells(12, ColCount).Value 'dann nimmt Mydate dessen Wert an
                If MyDate >= StartDate And _
                    MyDate <= EndDate Then      'für alle Mydate dazwischen
 
                    Demand = .Cells(24, ColCount) 'markiert Zeile 24 im Quellsheet (=Demand)
                    Stock= .Cells(34, ColCount) (in Zeile 34 stehen stocks)
                    
                    
        With Sheets("Sheet1")  ‘Zielsheet
        For Each Dat In DestDates
        If Month(MyDate) = Month(Dat) And _
            Year(MyDate) = Year(Dat) Then
            Dat.Offset(1, 0) = Demand   'fügt markierte Daten 1 Zeile unter Datum ein und 0  _
Spalten versetzt
            Dat.Offset(2, 0) = StockA_PTHF
            
    Exit For
        End If
        Next Dat
        End With
                End If
        End If
        Next ColCount
                 
End With
End Sub

Betrifft: AW: Daten von Vormonat in bestimmte Zelle
von: Yusuf
Geschrieben am: 10.11.2009 11:23:06
Moin,
ungetestet, ich weiss nicht wie sich das Makro nun auf deine Tabellen auswirken wird.
Auf jedenfall erstellt der erste Teile des Makros nun in Zeile 7 Datumsangaben von "Heute - 1 Monat bis Heute in einem Jahr.
Die veraenderten stellen habe ich mal "Fett" markiert
Ab "NewCol = 5 'column E" habe ich nichts veraendert.

Private Sub CommandButton1_Click()
    Dim StartDate As Variant
    Dim EndDate As Variant
    Dim NewCol As Variant
    Dim LastCol As Variant
    Dim ColCount As Variant
    Dim MyDate As Variant
    Dim DestDates As Variant
    Dim Dat As Variant
    Dim StartCol As Integer
    Dim MonthCount As Integer
    Dim YearCount As Integer
    StartDate = DateSerial(Year(Date), Month(Date) - 1, 1)  'Heutiger Monat, mit dem 1.  _
Tag des Monats
    EndDate = DateAdd("yyyy", 1, Date)  ' 1 Jahr später
 
    With Sheets("sheet1")    'With bis End With fügt die aktuellen 12 Monate im Zielsheet ein
        Set DestDates = .Range("E7:R7") 'Zielzellen für Monatsnamen
        StartCol = DestDates.Column     'Spalte 1 in DestDates
        MonthCount = Month(StartDate)   'heutiger Monat ist Monat Nr. 1
        YearCount = Year(StartDate)     'heutiges Jahr ist Jahr Nr. 1
        For ColCount = StartCol To (StartCol + 13)  '13 Spalten=1Jahr
            MyDate = DateSerial(YearCount, MonthCount, 1) 'startet bei erstem Datum
                .Cells(7, ColCount).NumberFormat = "mmm-yy"
                .Cells(7, ColCount) = MyDate    'Datum wird in zeile 7 geschrieben
                If MonthCount = 12 Then         'Falls Monat 12 erreicht
                    MonthCount = 1              'wird Monatsnr. wieder 1
                    YearCount = YearCount + 1   'und neues Jahr wird addiert
                Else
                    MonthCount = MonthCount + 1 'falls Monat nicht 12, dann immer eine Monatsnr. _
 addieren
                End If
        Next ColCount
    End With
 
    NewCol = 5 'column E
    'ab hier werden Daten unter den Monatsnamen eingefügt:
    Dim Demand As Integer
    Dim Stock As Integer
    With Sheets("Sheets2")   'Im Quell-Sheet "Sheet2" werden...
        LastCol = .Cells(12, Columns.Count).End(xlToLeft).Column    'Spalten in Reihe 12 überprü _
ft ( in Spalte 12 stehen die Monatsnamen)
        For ColCount = 3 To LastCol
            If IsDate(.Cells(12, ColCount)) Then    'falls heutiger Monat in Zeile 12 gefunden  _
wird
                MyDate = .Cells(12, ColCount).Value 'dann nimmt Mydate dessen Wert an
                If MyDate >= StartDate And _
                    MyDate <= EndDate Then      'für alle Mydate dazwischen
 
                    Demand = .Cells(24, ColCount) 'markiert Zeile 24 im Quellsheet (=Demand)
                    Stock = .Cells(34, ColCount) '(in Zeile 34 stehen stocks)
                    
                    
                    With Sheets("Sheet1")  'Zielsheet
                        For Each Dat In DestDates
                            If Month(MyDate) = Month(Dat) And _
                                Year(MyDate) = Year(Dat) Then
                                Dat.Offset(1, 0) = Demand   'fügt markierte Daten 1 Zeile unter  _
Datum ein und 0 Spalten versetzt
                                Dat.Offset(2, 0) = StockA_PTHF
            
                                Exit For
                            End If
                        Next Dat
                    End With
                End If
            End If
        Next ColCount
                 
    End With
    
End Sub

Gruß
Yusuf

Betrifft: AW: Daten von Vormonat in bestimmte Zelle
von: Chris
Geschrieben am: 10.11.2009 12:06:58
So meinte ich das eigentlich nicht. Dass in Zeile 7 die Monatsnamen von Heute bis in einem Jahr stehen, soll so bleiben.
In der Range F8:R8 stehen dann die zu den Monaten zugehörigen Daten von 'Demand' (Nov09-Nov10).
In der Range F9:R9 stehen die zu den Monaten zugehörigen Daten von 'Stock' (Nov09-Nov10).
Was neu dazu importiert/kopiert werden soll:
Ich möchte nur die Daten vom Stock des Vormonats in das Feld E9 geschrieben werden (Okt. 09). Es soll dafür keine eigene Spalte verwendet werden, sondern nur eine Zelle.

Betrifft: AW: Daten von Vormonat in bestimmte Zelle
von: Yusuf
Geschrieben am: 10.11.2009 12:53:44
Hmm,
da bin ich dann leider ueberfragt.
Stelle es mal wieder auf offen.
Gruß
Yusuf

Betrifft: AW: Daten von Vormonat in bestimmte Zelle
von: Chris
Geschrieben am: 10.11.2009 13:09:13
Ok, danke trotzdem.
Jemand weitere Tipps?

Beiträge aus den Excel-Beispielen zum Thema "Daten von Vormonat in bestimmte Zelle"