Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeitraum in einzelne Tage umwandeln

Zeitraum in einzelne Tage umwandeln
20.11.2019 15:19:51
Michael
Hallo Leute,
im Rahmen einer Hausarbeit stehe ich vor einem Problem, das ich mit Excel-Funktionen nicht gelöst bekomme.
Ich muss dazu sagen, dass ich noch nie vorher etwas mit VBA programmiert habe.
Folgende Situation:
Ich habe eine Tabelle mit über 1000 Buchungsvorgängen bzw. Zeilen. Eine Zeile besteht jeweils aus 26 Daten (Spalten) von 01.01.2015 bis 31.12.2018.
So sieht z.B. eine Spalte aus (mit Informationen gefüllt):
Anreisetag; Abreisetag; Name; Vorname; Zimmernummer; Anzahl Personen; Anzahl Übernachtungen; Miete; usw.
Für die Auswertung dieser Daten brauche ich für jeden Tag und dazugehöriger Zimmernummer in dem o.g. Zeitraum die jeweilige Belegung.
Ziel ist es also die ursprüngliche Tabelle "aufzublähen" und eine Tabelle nach folgendem Schema zu erstellen:
01.01.2015, Zimmer5, 4 Personen,....
01.01.2015 Zimmer4, 3 Personen,...
02.01.2015 Zimmer5, 4 Personen,....
02.01.2015 Zimmer4, 3 Personen,...
02.01.2015 Zimmer2, 1 Person,...
Man kann sowas doch bestimmt irgendwie programmieren mit Schleifen. Kann mir da jemand weiterhelfen mit konkreten Ansätzen? Ich bin momentan echt hilflos.
Viele Grüße
Michael
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Pivottabelle
20.11.2019 15:27:16
lupo1
Zeilenfeld 1: Datum
Zeilenfeld 2: Zimmer
Wertefeld: Anzahl Personen
Zwischensummen ein- oder ausschalten
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeitraum in einzelne Tage umwandeln


Schritt-für-Schritt-Anleitung

Um einen Zeitraum in einzelne Tage umzuwandeln und die Belegung für jeden Tag in Excel zu erfassen, kannst Du die folgenden Schritte ausführen:

  1. Daten vorbereiten: Stelle sicher, dass Deine Tabelle die Spalten Anreisetag, Abreisetag, Zimmernummer und Anzahl Personen enthält.
  2. Hilfsspalte erstellen: Füge eine neue Spalte hinzu, um die Anzahl der Tage zwischen Anreisetag und Abreisetag zu berechnen. Verwende die Formel:
    =DATEDIF(A2, B2, "D")

    Dabei ist A2 der Anreisetag und B2 der Abreisetag.

  3. Tage auflisten: Du kannst eine Schleife in VBA verwenden, um jeden Tag zwischen Anreise- und Abreisedatum aufzulisten. Gehe dazu wie folgt vor:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge ein neues Modul hinzu und kopiere den folgenden Code:

      Sub Aufblähen()
      Dim ws As Worksheet
      Set ws = ThisWorkbook.Sheets("DeineTabelle") ' Ersetze "DeineTabelle" mit dem Namen Deiner Tabelle
      Dim i As Long, j As Long
      Dim anreise As Date, abreise As Date
      Dim zimmer As String, personen As Long
      
      j = 1 ' Zeile für die neue Tabelle
      For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
         anreise = ws.Cells(i, 1).Value
         abreise = ws.Cells(i, 2).Value
         zimmer = ws.Cells(i, 5).Value ' Zimmernummer in Spalte 5
         personen = ws.Cells(i, 6).Value ' Anzahl Personen in Spalte 6
      
         For d = anreise To abreise
             ws.Cells(j, 8).Value = d ' Datum in Spalte 8
             ws.Cells(j, 9).Value = zimmer ' Zimmernummer in Spalte 9
             ws.Cells(j, 10).Value = personen ' Anzahl Personen in Spalte 10
             j = j + 1
         Next d
      Next i
      End Sub
  4. Code ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Tabelle zu erstellen.

Häufige Fehler und Lösungen

  • Fehler: Typen-Mismatch beim Ausführen des Codes
    Lösung: Überprüfe, ob die Datumsangaben in den richtigen Zellen als Datumswerte formatiert sind.

  • Fehler: Tabelle wird nicht aktualisiert
    Lösung: Stelle sicher, dass Du das Makro vollständig ausgeführt hast und die richtigen Zellreferenzen verwendest.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du auch mit Pivot-Tabellen arbeiten:

  1. Wähle Deine Daten aus und gehe zu Einfügen > PivotTable.
  2. Ziehe das Feld Datum in das Zeilenfeld und Zimmer in das Wertefeld.
  3. Wähle Anzahl der Personen als Wertefeld aus, um die Belegung zu sehen.

Praktische Beispiele

Angenommen, Du hast folgende Buchungen:

Anreisetag Abreisetag Zimmernummer Anzahl Personen
01.01.2015 02.01.2015 Zimmer 5 4
01.01.2015 03.01.2015 Zimmer 4 3

Nach der Ausführung des Makros solltest Du eine Tabelle erhalten, die so aussieht:

Datum Zimmernummer Anzahl Personen
01.01.2015 Zimmer 5 4
01.01.2015 Zimmer 4 3
02.01.2015 Zimmer 5 4
02.01.2015 Zimmer 4 3
03.01.2015 Zimmer 4 3

Tipps für Profis

  • Verwende die TEXT-Funktion, um das Datum in einem gewünschten Format darzustellen.
  • Optimiere den VBA-Code, indem Du nur relevante Zeilen bearbeitest, um die Ausführung zu beschleunigen.
  • Speichere Deine Excel-Datei regelmäßig, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass keine doppelten Einträge in der neuen Tabelle entstehen?
Antwort: Du kannst vor dem Hinzufügen neuer Zeilen eine Überprüfung einbauen, die sicherstellt, dass das Datum und die Zimmernummer bereits existieren.

2. Frage
Welche Excel-Version benötige ich für das VBA-Skript?
Antwort: Das VBA-Skript sollte in den meisten modernen Excel-Versionen ab Excel 2010 funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige