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

Datum

Forumthread: Datum

Datum
12.09.2025 16:06:12
Pitt
Moin,
habe ein Datum 11.8.-10.9. so geschrieben in Spalte z.B. A5, A7, A9 usw, möchte das er mir in Spalte B die Anzahl der Tage schreibt. geht das?
Danke Da die Zeilen unterschiedlich lang sind, wäre es vielleicht gut per VBA?
Danke Gruß Pitt
Anzeige

36
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum
12.09.2025 16:17:18
BoskoBiati
Hallo,

Spalte z.B. A5, A7, A9


Da die Zeilen unterschiedlich lang sind
Was soll das bedeuten?
Mit Formel in A5:

=WENN(REST(ZEILE();2)=1;WENNFEHLER(GLÄTTEN(WECHSELN(RECHTS(A5:A201;5);".";"";2))-GLÄTTEN(WECHSELN(LINKS(A5:A201;5);".";"";2));"");"")


Gruß

Edgar
Anzeige
AW: Datum
12.09.2025 16:24:12
Pitt
Moin Edgar,
Dies ist ein Tab das von anderen Blättern mit einem Makro gefüllt werden. Die Tabelle geht immer von A5-G?
Die Daten sollen immer angehängt werden.
AW: Datum
12.09.2025 16:22:01
RPP63
Moin!
Nein, Du hast kein Datum und keinen Zeitraum, sondern Text.
Wo ist das zugehörige Jahr?
Woher kommen die "Zeitraumtexte"?
Was meinst Du mit Anzahl der Tage?
Tage, Werktage?
Was ist mit Feiertagen?
Wie Du siehst, habe ich mehr Fragen als Du ;-)

Ein aktuelles Excel kann so etwas:
 AB
111.8.-10.9.31

ZelleFormel
B1=--(TEXTNACH(A1;"-")&25)-(TEXTVOR(A1;"-")&25)+1


Gruß Ralf
Anzeige
AW: Datum
12.09.2025 17:59:19
Pitt
Moin Ralf, Danke für Deine Antwort.
Zu Deinen Fragen.
Woher kommen die "Zeitraumtexte"? CSV Dateien
Was meinst Du mit Anzahl der Tage? Alle, Feiertage Wochenenden
Tage, Werktage? Dito
Was ist mit Feiertagen? Dito
Glaube mit der VBA variante wäre für mich besser.
Danke
Gruß Pitt
Anzeige
UDF
12.09.2025 18:38:59
RPP63
Function Zeitraum&(Dingens As String)

Dim arr, Ende As Date, Anfang As Date
arr = Split(Dingens, "-")
Ende = arr(1) & 25 * 1
Anfang = arr(0) & 25 * 1
Zeitraum = Ende - Anfang + 1
End Function

 ABC
111.8.-10.9.3131

ZelleFormel
B1=(TEXTNACH(A1;"-")&25)-(TEXTVOR(A1;"-")&25)+1
C1=Zeitraum(A1)
Anzeige
Das * 1
12.09.2025 18:41:07
RPP63
… ist natürlich Blödsinn, es reicht (durch Date-Typ der Variablen):
Function Zeitraum&(Dingens As String)

Dim arr, Ende As Date, Anfang As Date
arr = Split(Dingens, "-")
Ende = arr(1) & 25
Anfang = arr(0) & 25
Zeitraum = Ende - Anfang + 1
End Function
Anzeige
AW: Datum
12.09.2025 16:32:24
GerdL
Moin Pitt!
Sub Unit()


Dim C As Range

On Error Resume Next
For Each C In Range("A5:A" & Cells(Rows.Count, "A").End(xlUp).Row)
If InStr(C, "-") Then
C.Offset(0, 1) = CDate(Split(Range("A5"), "-")(1) & Year(Date)) - _
CDate(Split(Range("A5"), "-")(0) & Year(Date)) + 1
End If
Next

End Sub

Gruß Gerd
Anzeige
AW: Datum
12.09.2025 17:54:20
Pitt
Danke Gerd für die schnelle Antwort. Es ist ja nicht nur ein Datum drin in A, es stehen etliche in Spalte A die nicht immer gleich sein müssen.
Danke
Gruß Pitt
AW: Datum
12.09.2025 16:57:29
Alwin Weisangler
Hallo Pitt,

via Nettoarbeitstage.Intl wäre dies, momentan ohne Freie Tage betrachtet so:


=NETTOARBEITSTAGE.INTL(LINKS(A5;FINDEN("-";A5)-1)&JAHR(HEUTE());RECHTS(A5;FINDEN("-";A5)-1)&JAHR(HEUTE());1)

Den Bereich der freien Tage hast du uns nicht mitgeteilt. Also ggf. nach den Parameter Wochenende ;1 für Sa. und So. ein ; und dann den Bereich der freien Tage selbst zuweisen.

Gruß Uwe
Anzeige
AW: Datum
12.09.2025 18:11:22
daniel
Hi
du könntest so vorgehen:
1. zwei Leerspalten einfügen
2. Spalte A mit TEXT IN SPALTEN in zwei Teile aufteilen mit dem "-" als Trennzeichen. Stelle in Schritt 3 für beide Spalten das Format "Datum" mit TMJ ein (Tag-Monat-Jahr).
Damit bekommst du das erste Datum in Spalte A und das zweite Datum in Spalte B.
3. in Spalte C kannst du dann einfach rechnen: =B1-A1, da ein Datum für Excel eine einfache Zahl ist, bei der ein Tag dem Wert 1 entspricht.

sollte bei Bedarf auch einfach mit VBA machbar sein, der Recorder ist dein Freund

Gruß Daniel
Anzeige
AW: Datum
12.09.2025 18:25:40
BoskoBiati
Hallo Daniel,

ich bezweifle, dass das funktioniert. Hinter der Monatsbezeichnung steht ein Punkt, damit erkennt Excel nicht, dass es ein Datum sein soll.

Gruß

Edgar
AW: Datum
12.09.2025 18:43:51
Pitt
Danke für die Antwort, es sind nicht die Punkte, sondern der - der nicht funktioniert bei mir.
Gruß Pitt
AW: Datum
12.09.2025 18:55:23
daniel
"ich bezweifle, dass das funktioniert."

versuch macht kluch!

wenn du einfach nur trennst und der Excel-Automatik vertraust, dann hast du recht.
wenn du aber im Schritt 3 des Assistenten explizit vorgibst dass die Werte ein Datum sein sollen, dann funktioniert die Umwandlung in ein Datum auch mit dem Punkt am Ende.
Dass man diese Formatierung im Schritt 3 vornehmen soll, hatte ich in meiner Antwort beschreiben. Hast du das gelesen und bei deiner Antwort schon berücksichtigt?
Anzeige
AW: Datum
12.09.2025 19:02:27
Pitt
Daniel das funktioniert leider nicht. Solange der Bindestrich vorhanden ist nimmt er keine trennung in einer 2 Spalte vor. Die Punkte sind egal
Danke
Gruß Pitt
AW: Datum
12.09.2025 19:15:05
BoskoBiati
Hi,

danke für die Aufklärung. Wieder was gelernt!

Gruß

Edgar
AW: Datum
12.09.2025 19:12:27
daniel
hast du auch den Bindestrich als Trennzeichen eingestellt (Schritt 2 des Assistenten)?????
verwendest du hier auch den Bindestrich, der in deiner Datei vorkommt (ggf mit Kopieren-Einfügen übernehmen)???
Anzeige
AW: Datum
12.09.2025 18:32:10
Pitt
Hallo Daniel, klappt bei mir nicht mit diesem Datum. Wenn ich 2 Namen nehme dann schon. Was mache ich falsch?
Gruß Pitt
AW: Datum
12.09.2025 18:57:16
daniel
keine Ahnung.
ich kenne weder deine Datei, noch weiß ich, was du machst.
bei mir funktioniert die Umwandlung des Textes "11.8.-10.9." mit Text-in-Spalten, so wie von mir beschrieben, wunderbar.
vielleicht hast du in der Datei ein anderes Trennzeichen ?
Anzeige
AW: Datum
12.09.2025 19:33:07
Pitt
Hallo Daniel,
Danke für deine Geduld.
Habe eben den Pc neu gestartet, nun gehts bei mir auch. Entschuldigung.
Aber die Tage ausrechnen kann ich nicht mit der Formel B1-A1 Da kommt WERT bei mir.

Gruß Pitt
AW: Datum
12.09.2025 19:55:03
Alwin Weisangler
Hallo,

ich kam jetzt erst wieder an den PC. Mein Lösungsweg via VBA wäre so:


Sub AnzahlTageAusgeben()
Dim arrDb(): arrDb = Tabelle1.Range("A2:A1000").Value
Dim i&, tmp
For i = 1 To UBound(arrDb)
If arrDb(i, 1) > "" Then
tmp = Split(arrDb(i, 1), "-")
tmp(0) = tmp(0) & Year(Date)
tmp(1) = tmp(1) & Year(Date)
arrDb(i, 1) = WorksheetFunction.NetworkDays_Intl(CDate(tmp(0)), CDate(tmp(1)), 1)
End If
Next i
Tabelle1.Cells(2, 2).Resize(UBound(arrDb), 1) = arrDb
End Sub


Gruß Uwe
Anzeige
AW: Datum
12.09.2025 20:17:11
Pitt
Moin Uwe, Danke für Deine Mühe.
Leider passiert in Spalte B nichts. Das Datum steht ja in A5:A1000 ????
Gruß Pitt
AW: Datum
12.09.2025 20:23:21
RPP63
Haben wir in diesem Endlosthread eigentlich "schon" eine Datei von dir erhalten, um mal die Daten zu checken?
AW: Datum
12.09.2025 20:25:48
Alwin Weisangler
Hallo Piet,

Anbei eine kleine Beispieldatei, die ganz normal funktioniert.
https://www.herber.de/bbs/user/178895.xlsm

Gruß Uwe
Anzeige
AW: Datum
12.09.2025 20:42:03
Pitt
Was soll man da noch sagen, einfach Klasse.
Danke für Deine Mühe. Toll
Gruß Pitt
ALLE Vorschläge dürften funktionieren!
12.09.2025 21:00:51
RPP63
Aber Du willst ja keine Datei zeigen und ziehst die Community lieber am Nasenring durch die Manege …
Muss ich nicht verstehen!
AW: ALLE Vorschläge dürften funktionieren!
12.09.2025 23:31:43
Pitt
Entschuldige Bitte, aber ich bin nicht so schnell. Anbei die Datei.
https://www.herber.de/bbs/user/178899.xlsm

Gruß Pitt
Anzeige
Das Makro in der...
13.09.2025 01:31:49
Case
Moin Pitt, :-)

... Beispieldatei beginnt in A5 und nimmt dann jede 2te Zelle (A5, A7, A9...). Wenn das bei dir anders ist, musst du anpassen. ;-)
https://www.herber.de/bbs/user/178902.xlsb

Servus
Case
Anzeige
AW: Das Makro in der...
13.09.2025 12:22:56
Pitt
Moin Case, vielen Dank für Deine Unterstützung.
Gruß Pitt
AW: Datum
12.09.2025 21:15:37
Alwin Weisangler
Hallo Pitt,

das ist nur die Umsetzung der Formel via VBA eben mal im Speicher (Array statt durch Zelen in Blatt). Und nur die Ausgabe erfolgt in einem Rutsch im Tabellenblatt. Mit einer Sache lässt du alle hier im Dunkeln. Was ist mit den freien Arbeitstagen (Urlaub + Feiertage).

Gruß Uwe
Anzeige
AW: Datum
12.09.2025 22:36:48
Pitt
Hallo Uwe, nochmals Danke für Deine Hilfe. Habe nun aber bemerkt das die Wochenenden u. Feiertage nicht mit drin sind. sollten sie aber.
Vielleicht magst Du nochmal drauf schauen.
Danke Gruß Pitt
AW: Datum
13.09.2025 11:20:07
Alwin Weisangler
Hallo Pitt,

verstehe ich es richtig, dass nur die Anzahl der Tage einschließlich Wochenende etc. ausgegeben werden soll?

Wenn ja wäre dies so:


Option Explicit

Sub AnzahlTageAusgeben()
Dim arrZR(): arrZR = Tabelle1.Range("A5:A" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
Dim i&, tmp
ReDim Preserve arrZR(1 To UBound(arrZR), 1 To 1)
For i = 1 To UBound(arrZR) 'Step 2'Es ginge nach diesem Beispiel auch Step 2
tmp = Split(arrZR(i, 1), "-")
If arrZR(i, 1) > "" Then arrZR(i, 1) = CDate(tmp(1) & Year(Date)) - CDate(tmp(0) & Year(Date))
Next i
With Tabelle1.Cells(5, 2).Resize(UBound(arrZR), 1) = arrZR
End Sub

Falls nicht braucht es eine eindeutige Beschreibung deinerseits.

Gruß Uwe
Anzeige
AW: Datum
13.09.2025 11:40:33
Pitt
Moin Uwe, Danke Das Du Dich nochmal hingesetzt hat und den Code zuschreiben. Leider bekomme ich ein Fehler angezeigt. Fehler beim kompilieren Typen unverträglich. Es sollen alle Tage genommen werden. Wochenende, Feiertage, egal alle. Danke
Gruß Pitt
AW: Datum
13.09.2025 11:57:25
Alwin Weisangler
Hallo Pitt,

sorry man soll es eben mal testen. Ändere dies so:


Option Explicit

Sub AnzahlTageAusgeben()
Dim arrZR(): arrZR = Tabelle1.Range("A5:A" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
Dim i&, tmp
ReDim Preserve arrZR(1 To UBound(arrZR), 1 To 1)
For i = 1 To UBound(arrZR) 'Step 2'Es ginge nach diesem Beispiel auch Step 2
tmp = Split(arrZR(i, 1), "-")
If arrZR(i, 1) > "" Then arrZR(i, 1) = CDate(tmp(1) & Year(Date)) - CDate(tmp(0) & Year(Date))
Next i
Tabelle1.Cells(5, 2).Resize(UBound(arrZR), 1) = arrZR
End Sub


Gruß Uwe


Anzeige
AW: Datum
13.09.2025 12:20:48
Pitt
Moin Uwe,
Toll, Herzlichen Dank, allein hätte ich es nicht geschafft.
Gruß Pitt
AW: Datum
13.09.2025 22:28:31
Alwin Weisangler
Hallo Pitt,

Sorry, irgendwie war ich heute Morgen noch nicht richtig munter.
Richtig so:


Sub AnzahlTageAusgeben()
Dim arrZR(): arrZR = Tabelle1.Range("A5:A" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
Dim i&, tmp
For i = 1 To UBound(arrZR) 'Step 2'Es ginge nach diesem Beispiel auch Step 2
tmp = Split(arrZR(i, 1), "-")
If arrZR(i, 1) > "" Then arrZR(i, 1) = CDate(tmp(1) & Year(Date)) - CDate(tmp(0) & Year(Date))
Next i
Tabelle1.Cells(5, 2).Resize(UBound(arrZR), 1) = arrZR
End Sub

Redim Preserve wäre nur erforderlich, wenn das Array mit .UsedRange.... geladen wird.

Gruß Uwe

Anzeige
AW: Datum
12.09.2025 17:56:00
Pitt
Moin Uwe, Danke für deine Antwort. Ich glaube das eine Vba Lösung idealer ist für die Tabelle.
Danke.
Gruß Pitt
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18