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

Forumthread: Anzahl Tage von-bis mit VBA Berechnen

Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 22:03:31
bully
Hallo Excelfreunde,
Ich möchte mit VBA in einer Tabelle die Anzahl Tage zwischen zwei Datumswerten berechnen.
Wenn in der Spalte A ein Wert &gt0 steht, soll das Datum in Spalte C, vom Datum in Spalte B abgezogen werden und in Spalte D die Differenz in Tagen ausgegben werden.
Bei meinem Tabellenblatt handelt es sich um ein Archivierungsblatt, in das per Makro neue Datensätze immer nach der letzen Datensatzzeile angefügt werden. Nach dem kopieren sollen dann die Differnztage berechnet werden.
Dank euch habe ich bereits diverse VBA-Codes hinbekommen, aber für VBA-Berechnungen fehlt mir jede Grundlage. Also meine Frage an euch:
Wie krieg ich das hin?
Gruss bully
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 22:13:50
Ramses
Hallo
Sub Demo() If Range("A1") > 0 Then Range("D1") = Range("C1")-Range("B1") End If End Sub
Gruss Rainer
AW: Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 22:37:48
bully
Hallo Rainer,
danke für deine schnelle Antwort. Wie nicht anders zu erwarten war, funktioniert der Code. :-))
Zwei Punkte sind noch offen: 1. die Berechnung läuft mit Range nur in der jeweiligen Zeile, wie kann ich die Berechnung auf jede Zeile die einen Datensatz enthält erweitern? 2. zum Teil fehlen in den Datensätzen die "vom" Datum(Spalte B), in diesem Fall soll in Spalte D z.B. ein "!" ausgegeben werden.
Ist das möglich?
Gruss bully
Anzeige
AW: Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 23:07:49
Ramses
Hallo
warum schreibst du dann nicht einfach eine Formel rein und kopierst diese Bedarf nach unten ?
Tabelle3

 ABCDE
1101.01.200510.01.2007739 
2001.01.200531.12.2006  
31 10.01.2007 ! ! !  
4     

Formeln der Tabelle
ZelleFormel
D1=WENN(A1>0;WENN(B1="";" ! ! ! ";C1-B1);"")
D2=WENN(A2>0;WENN(B2="";" ! ! ! ";C2-B2);"")
D3=WENN(A3>0;WENN(B3="";" ! ! ! ";C3-B3);"")

Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML    Download  
Das vereinfacht das ganze und du weisst ja auch wo Datensätze drin stehen.
Alles andere ist doch viel zu aufwändig
Gruss Rainer
Anzeige
AW: Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 23:25:54
bully
Hallo Rainer,
die Variante mit der Wenn-Funktion ist kein Problem das bring ich zum laufen. Da ich die Daten mit VBA in das Archivblatt kopiere, habe ich gedacht, es sei sinnvoller die Berechnung auch mit VBA zu machen. Aber wenn das komplizierter wird, dann mach ich's eben mit der Wenn-Funktion.
Danke für deine Hilfe
Gruss bully
Anzeige
AW: Anzahl Tage von-bis mit VBA Berechnen
Daniel
Hallo
es ist mit der formel auf jeden Fall einfacher zu programmieren.
und wenn du viele Daten hast, ist es auf jeden Fall auch schneller, die Formel reinschreiben und nach unten zu kopieren, als jeden Datensatz im Makro einzeln durchzurechnen.
Gruß, Daniel
AW: Anzahl Tage von-bis mit VBA Berechnen
10.01.2007 22:51:21
Daniel
Hallo
zur erklärung
Datumswerte sind auch nur ganz normale Zahlen, die Excel eben nur in der Anzeige etwas umformatiert, wenn es weiß, daß es ein Datum sein soll.
(das kannst du ganz einfach ausprobieren wenn du mal die Zellformatierung eines Datums auf STANDARD setzt oder eine beliebige Zahl als Datum formatierst.)
Daher kannst du mit Datumswerten auch ganz normal rechnen, wie mit anderen Zahlen auch.
Ein Tag hat den Wert 1, die Tagszeit ist dann in den Nachkommastellen dargestellt (1 Stunde = 1/24).
Der Tag 1 in der Excelzählung ist der 1.1.1900, dh heute haben wir den Tag 39092
Gruß, Daniel
Anzeige
AW: Anzahl Tage von-bis mit VBA Berechnen
bully
Hallo Daniel,
danke für deine Erläuterung. Dass Excel die Datmswerte als normale Zahlen rechnet, wusste ich, dass die Nachkommastellen als Stunden, Minuten und Sekunden angegeben werden, wusste ich nicht.
Gruss bully

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anzahl Tage von-bis mit VBA Berechnen


Schritt-für-Schritt-Anleitung

Um die Anzahl der Tage zwischen zwei Datumswerten mit VBA zu berechnen, kannst Du die folgenden Schritte befolgen:

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

  2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub BerechneTage()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, "A").End(xlUp).Row
    
       Dim i As Long
       For i = 1 To letzteZeile
           If Cells(i, 1).Value > 0 Then
               If IsEmpty(Cells(i, 2).Value) Then
                   Cells(i, 4).Value = " ! ! ! "
               Else
                   Cells(i, 4).Value = Cells(i, 3).Value - Cells(i, 2).Value
               End If
           End If
       Next i
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro BerechneTage über Entwicklertools > Makros aus.

Dieser Code überprüft jede Zeile in Spalte A. Wenn der Wert größer als 0 ist, wird die Differenz zwischen den Datumswerten in Spalte B und C berechnet und in Spalte D ausgegeben. Falls das Datum in Spalte B fehlt, wird ein Ausrufezeichen angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"
    Lösung: Stelle sicher, dass die Zellen in Spalte B und C als Datumswerte formatiert sind.

  • Fehler: "Bereich außerhalb des gültigen Bereichs"
    Lösung: Überprüfe, ob die letzte Zeile korrekt ermittelt wird. Der Code sollte die letzte Zeile in Spalte A finden.


Alternative Methoden

Wenn Du die Anzahl der Tage lieber ohne VBA berechnen möchtest, kannst Du auch eine Excel-Formel verwenden. Hier ist ein einfaches Beispiel für eine Formel, die Du in Zelle D1 eingeben kannst:

=WENN(A1>0;WENN(B1="";" ! ! ! ";C1-B1);"")

Diese Formel funktioniert ähnlich wie das VBA-Skript und gibt die Anzahl der Tage in Spalte D zurück.


Praktische Beispiele

Angenommen, Du hast die folgenden Daten:

A B C D
1 01.01.2020 10.01.2020 9
0 05.02.2020 15.02.2020 ! ! !
1 20.02.2020 ! ! !

In diesem Fall wird die Anzahl der Tage zwischen den Daten in Spalte B und C in Spalte D berechnet. Wenn Spalte B leer ist, wird ein "!" angezeigt.


Tipps für Profis

  • Verwende benannte Bereiche: Wenn Du oft mit ähnlichen Daten arbeitest, kannst Du benannte Bereiche für Deine Datumswerte erstellen, um die Lesbarkeit Deiner Formeln zu verbessern.

  • Automatisiere mit Ereignissen: Du kannst das VBA-Skript so anpassen, dass es automatisch ausgeführt wird, wenn Du Daten in das Tabellenblatt eingibst, indem Du es in die Worksheet_Change-Ereignisprozedur einfügst.

  • Kalendertage vs. Arbeitstage: Wenn Du nur die Arbeitstage zwischen zwei Daten berechnen möchtest, kannst Du die Funktion NETTOARBEITSTAGE verwenden.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Tage zwischen zwei Daten in Jahren umrechnen?
Du kannst die Anzahl der Tage durch 365 teilen, um die Jahre zu berechnen. Beispiel: =D1/365.

2. Wie kann ich das Datum in 50 Tagen berechnen?
Du kannst die Formel =HEUTE()+50 verwenden, um das Datum zu erhalten, das in 50 Tagen liegt.

3. Gibt es eine Möglichkeit, nur die Arbeitstage zwischen zwei Daten zu berechnen?
Ja, dafür kannst Du die Funktion NETTOARBEITSTAGE verwenden, um die Anzahl der Arbeitstage zwischen zwei Datumswerten zu berechnen.

4. Wie kann ich die Anzahl der Kalendertage zwischen zwei Daten berechnen?
Einfach die Formel =C1-B1 verwenden, um die Differenz der Datumswerte zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige