Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten von Vormonat in bestimmte Zelle

Forumthread: Daten von Vormonat in bestimmte Zelle

Daten von Vormonat in bestimmte Zelle
Vormonat
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 

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Daten von Vormonat in bestimmte Zelle
10.11.2009 11:23:06
Vormonat
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 

Gruß
Yusuf
Anzeige
AW: Daten von Vormonat in bestimmte Zelle
10.11.2009 12:06:58
Vormonat
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.
Anzeige
AW: Daten von Vormonat in bestimmte Zelle
10.11.2009 12:53:44
Vormonat
Hmm,
da bin ich dann leider ueberfragt.
Stelle es mal wieder auf offen.
Gruß
Yusuf
AW: Daten von Vormonat in bestimmte Zelle
10.11.2009 13:09:13
Vormonat
Ok, danke trotzdem.
Jemand weitere Tipps?
;
Anzeige
Anzeige

Infobox / Tutorial

Daten vom Vormonat in eine bestimmte Zelle übertragen


Schritt-für-Schritt-Anleitung

Um die Daten vom Vormonat in eine bestimmte Zelle in Excel zu übertragen, musst du dein Makro anpassen. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Finde das Makro, das du bearbeiten möchtest. In diesem Fall ist es das CommandButton1_Click() Makro.

  3. Ändere die StartDate-Variable, um den Vormonat richtig anzuzeigen. Ändere die Zeile:

    StartDate = DateSerial(Year(Date), Month(Date), 1)  

    zu:

    StartDate = DateSerial(Year(Date), Month(Date) - 1, 1)  
  4. Setze die Zielzelle für den Stock des Vormonats. Ändere die Ziel-Ranges für die Monatsnamen und die zugehörigen Daten:

    Set DestDates = .Range("E7:R7") 'Zielzellen für Monatsnamen

    und

    Cells(9, 5) = Stock 'Hier wird der Stock vom Vormonat in E9 geschrieben
  5. Füge die Logik für den Übertrag vom Vormonat hinzu. Du kannst die Daten für den Vormonat mit einer einfachen IF-Bedingung überprüfen.

  6. Speichere die Änderungen und schließe den VBA-Editor.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"
    Überprüfe, ob alle Variablen korrekt deklariert sind und ob du die richtigen Datentypen verwendest.

  • Fehler: Daten werden nicht angezeigt
    Achte darauf, dass die Zelle E9 korrekt referenziert wird und dass das Makro ausgeführt wird, wenn die Daten aktualisiert werden.

  • Fehler: Falsches Datum angezeigt
    Stelle sicher, dass die Logik zur Berechnung des Vormonats korrekt implementiert ist. Teste die Berechnungen mit verschiedenen Datumsangaben.


Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Excel-Formel EDATUM verwenden, um Daten vom Vormonat anzuzeigen:

=EDATUM(HEUTE(), -1)

Diese Formel gibt das Datum vom Vormonat zurück. Du kannst diese Formel anpassen, um spezifische Daten aus deiner Tabelle zu extrahieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Daten vom Vormonat anzuzeigen:

Angenommen, du hast in Zeile 12 die Monatsnamen und in Zeile 9 die zugehörigen Stock-Daten:

  • In Zelle E9:
    Cells(9, 5).Value = Application.WorksheetFunction.Index(Sheets("Sheet2").Range("F9:R9"), 1, Month(Date) - 1)

Dies gibt dir den Stock des Vormonats in Zelle E9 zurück.


Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen in deinem Makro, um unerwartete Fehler besser zu handhaben.
  • Verwende Debug.Print, um Variablen während der Ausführung des Makros zu überwachen.
  • Halte deinen Code sauber und dokumentiert, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Daten vom Vormonat in Excel anzeigen?
Verwende die Formel EDATUM oder passe dein Makro an, um die Daten direkt in die gewünschte Zelle zu übertragen.

2. Was ist der Unterschied zwischen einer Formel und VBA für diesen Anwendungsfall?
Eine Formel ist einfacher und benötigt keine Programmierkenntnisse, während VBA mehr Flexibilität und Automatisierung bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige